OCIには、メール配信というサービスがあります。

簡単に言うと、SMTPサーバーを貸してくれます。

昨今、Gmailのポリシーが厳しくなり、しっかりメール配信手段を管理しないと、Gmailさんは、迷惑メールと判定してしまうようになります。

これをクリアするには、SPFとDKIMを、しっかり設置した方法でメール配信をする必要があります。

とりあえず、決まったところにだけメール配信するだけなら、OCIのメール配信機能を使えば良いと思います。

しかしながら、自身のドメインアドレスから配信するとなると、上記、SPFとDKIM、さらにDMARCを設置しておきたいですね。

ということで、キチンとSPFとDKIMを処置したメール配信をOCIで構築してみます。

まず、ドメインですが、TXTフィルードとCNAMEフィールドを設定する必要があるので、そういったことが管理出来る状態にしておきましょう。

namecheapなんかでドメインを取得して、サーバーをOCIにしてしまうと管理が楽になりますよ。


1.配信ドメイン

OCIの電子メール配信のメニューに、電子メール・ドメインってのが あります。

これは、配信元ドメインにあたります。

つまり、このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 の hoge.co.jpの部分です。

電子メール・ドメインとして hoge.co.jp を作るこで、SPFやDKIMを設置することが可能となるのですよ。

但し、hoge.co.jp の DNSサーバーに、SPFとDKIM を設置する必要があるので、そういったことが可能な状況を用意する必要があります。

namecheapで、ドメインを作って、DNSサーバーをOCIに向ければ良いです。

 

2.SPF

さー、基本中の基本、SPFの設置です。

SPFのことは、chatgptにでも聞いていただければ、わかると思います。

簡単に言うと、hoge.co.jpドメインからのメール配信は、このサーバーから発信されますよって、宣言することです。

ここに宣言されていない場所からの配信は、いんちきだぜって ことになります。

で宣言する方法は、超簡単で、hoge.co.jpのDNSサーバーに txtフィールドで以下を記載するだけでOkとなります。

"v=spf1 include:ap.rp.oracleemaildelivery.com ~all"

 

3.DKIM

ちょっと、こ難しいDKIMです。

暗号鍵方式を使ったメールの正当性を判定する方法です。

これもchatgptにでも聞いていただければ、わかると思います。

雑に話すと、OCIのSMTPサーバーが メールに秘密の暗号文字を入れて送信します。受信したサーバーがhoge.co.jpドメインから取ってきた呪文解除文字を用い照合することで、配信元の正しさを判定します。

暗号文字を作る鍵(非公開)と呪文解除文字(公開)が、ペアになっていることがポイントとなります。

とにかく、良い感じで、判断出来るのですよ。

で、呪文解除文字で照合失敗すると、いんちきだぜってことになります。

で、これも簡単に設置することが出来まして、hoge.co.jpのDNSサーバーに CNAMEフィールドを設置することでOkとなります。

SPFと違うのは、DKIM用のセレクタを作成する必要があります。

OCIに電子メール・ドメインとして hoge.co.jp を作ったと思います。

ここで、DKIMの追加を行います。

すると、DKIMセレクタを入力する必要が発生します。

まー、適当で良いんですが、ここの文字列を 後でCNAMEに登録する必要があるので、公開されても恥ずかしくない文字列にしましょう。

hogehoge-v001-202403 とか、入力しておけば良いんじゃないでしょうか。

で、DKIMレコードの生成を押下すると、内部で鍵が作成されます。

作成されると、CNAMEレコードと値が表示出来るので、これを DNSのCNAMEとして登録すればOkです。

 

4.承認済送信者

これは、OCIのSMTPサーバー が、配信を許可する配信者を判断する為のリストです。

ここに登録の無い人が 配信を OCIのSMTPサーバー に要求しても、捨てられちゃいます。

なので、このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 さんとかを登録しておく必要があります。

ちなみに、SMTPへの接続情報は、構成を表示すれば記載があります。

それと、ユーザーのSMTP資格証明(プロファイルから作成出来ます)が必要です。

管理する場合、ポリシー が、必要となりますよ。

 

とりあえず、こんだけやっておけば、Gmailさんも納得していただけれるようで、受信してくれました。

Gmailさんで受信した メッセージのソースを表示すると、SPFとDKIMが PASSと表示されますね。

さらに向上心のある方は、DMARCも設置してみましょう。


じゃー、具体的にどうやって構築するんだって話ですよね。

ということで、OCIでメール配信システムを構築してみましょう。

今回は、Ubuntuで行きますよ

Docker化も可能ですので、頑張って構築してみましょう。

TCP 25 だけ、外に晒せば良いです。

TCP 587 993は、内部で接続出来れば良いです。

 

1.必要なパッケージ

王道のPostfix + Dovecot認証で構築します。

 

apt install postfix

apt install dovecot-core dovecot-imapd

 

2.postfix設定

OCIメール配信にリレー設定を行います。

SMTP-AUTH認証を使う為に、dovecotクライアント認証を構築します。

メールサイズを3MBに限定します。

 

/etc/postfix/main.cf

myhostname = mx.hoge.co.jp

mydomain = hoge.co.jp

myorigin = $mydomain

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks = 127.0.0.0/8

 

home_mailbox = Maildir/

 

inet_interfaces = all

 

#OCI Relay

relayhost = smtp.email.ap-osaka-1.oci.oraclecloud.com:587

smtp_sasl_auth_enable = yes

broken_sasl_auth_clients = yes

smtpd_relay_restrictions = permit_sasl_authenticated, defer_unauth_destination

smtp_sasl_password_maps = hash:/etc/postfix/relay_password

smtp_tls_security_level = may

smtp_sasl_security_options = noanonymous

 

#Client SMTP-AUTH

smtpd_sasl_auth_enable = yes

smtpd_sasl_type = dovecot

smtpd_sasl_path = private/auth

 

# High security

smtpd_reject_unlisted_recipient = yes

smtpd_helo_required = yes

smtpd_helo_restrictions = reject_unknown_hostname, reject_non_fqdn_hostname, reject_invalid_hostname

smtpd_sender_restrictions = reject_unknown_sender_domain, reject_non_fqdn_sender

disable_vrfy_command = yes

smtpd_banner = ESMTP MTA

 

virtual_alias_domains = hoge.co.jp

virtual_alias_maps = hash:/etc/postfix/virtual

 

#OCI SMTP no support

smtputf8_enable = no

 

syslog_facility = mail

 

compatibility_level = 3.6

 

message_size_limit = 31457280

 

3.送受信者設定

ここで、送受信することが出来るアカウントをマップしておきます。

OSユーザーと実メールアドレスのマッピングですね。

 

/etc/postfix/virtual

root@hoge.co.jp root

user1@hoge.co.jp user1

 

ハッシュDB化

postmap /etc/postfix/virtual

 

submissionポートを設定して、送信する時は、こっちを使ってもらいましょう。

/etc/postfix/master.cf

submission inet n       -       y       -       -       smtpd

  -o smtpd_tls_security_level=may

  -o smtpd_sasl_auth_enable=yes

  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject



メーラー設定

STARTTLS:587 パスワード:planetext

アカウント:ユーザー名のみ

パスワード:OSと一致

 

3.OCIリレー設定

OCIのアカウントプロファイルにSMTP資格証明ってのがあるので、ここで証明を作って設定します。

 

/etc/postfix/relay_password

smtp.email.ap-osaka-1.oci.oraclecloud.com:587 このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。:i&Zr[r0EvvvKU$5hogeI

 

chmod og-rw relay_password

 

ハッシュDB化

postmap /etc/postfix/relay_password



4.dovecot設定

imap4環境を作って、受信したメールを見れるようにします。

 

/etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = yes

auth_mechanisms = plain

 

/etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir

 

/etc/dovecot/conf.d/10-master.conf

service auth {

  # Postfix smtp-auth

  unix_listener /var/spool/postfix/private/auth {

    mode = 0666

  }

}

 

メーラー設定

SSL/TLS:993 パスワード:planetext

アカウント:ユーザー名のみ

パスワード:OSと一致



5.受信メール定義

DNSレコードにmxを作成して、mx.hoge.co.jp を構築しておきましょうね。

mx.hoge.co.jpは、postfixが動作しているサーバーとして下さいね。

 

hoge.co.jp                                MX    3600 1 mx.hoge.co.jp.

mx.hoge.co.jp                             A    3600  120.72.232.71

 

6.メール送信 ドメイン認証

実際にDNSレコードに設定する内容です。

 

SPF定義

hoge.co.jp                                TXT   3600  "v=spf1 include:ap.rp.oracleemaildelivery.com ~all"

 

DKIM定義

OCIで作ったDKIM定義を設定します。

これで、GMAILさんも許してくれるでしょう。

oreore-fire-202403._domainkey.hoge.co.jp  CNAME 3600  oreore-fire-202403.hoge.co.jp.dkim.kix1.oracleemaildelivery.com.

 

DMARK定義

よそで不正にメールが扱われた場合、このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。に内容が飛んできます。

_dmarc.hoge.co.jp    TXT 3600 “v=DMARC1; p=none; rua=mailto:このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。

 

7.送信テスト

ローカルより送信する場合、コマンドでさくっと送れます。

apt install bsd-mailx

echo “TEST” | mailx -s “TEST” -r このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。

 

8.外部より送信テスト

別のUbuntuとかから送信する場合、TLS接続しないとダメなので、s-nail を使いましょう。

user1で送信して、パスワードも埋め込んでいますよ。

postfixに内部から接続するので、内部用のFQDN(mx.hoge.internal)を指定しています。

送信元がIPだと送信出来ないので、仮の名前をセットしています。

 

apt install s-nail

echo "漢字もいけるよ" | s-nail -:/ -S smtp-use-starttls -S ssl-verify=ignore -S hostname=pc1.hoge.internal -S ttycharset=UTF-8 -S v15-compat -S mta=smtp://`echo 'urlcodec enc user1' | s-nail -#`:`echo 'urlcodec enc password1' | s-nail -#`@mx.hoge.internal:587 -s "タイトル UTF8" -r このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。


とりあえず、シンプルメール配信サーバーは、これで十分でしょう。

しかし、業務用途となると、添付の自動暗号化や、マルウェア防止等の対策が必要となるので、Milter Api を使って、SaMMAなんかを使わないといけないですね。

とりあえず、小さいシステム向けの一斉配信等向けなんかだと、これで十分かなぁ

 

Joomla templates by a4joomla