前提条件
・ ホスト名は、FQDNで設定済みである。
・ メールは、サービスや監視などからの送信のみを想定している。
・ メールのリレーが行える想定である。
1 2 3 4 5 6 7 8 9 |
#inet_interfaces = localhost # 外部インターフェースからも接続できるようにコメントアウト inet_interfaces = all # 全ての外部インターフェースからも接続許可 #inet_protocols = all # IPv6の接続を外すためにコメントアウト inet_protocols = ipv4 # IPv4の接続のみ許可 mynetworks = 192.168.0.0/16, 172.16.0.0/12, 127.0.0.0/8 # 外部信頼IPアドレス disable_vrfy_command = yes # 追加 |
管理コマンド
1 2 3 4 5 |
systemctl enable postfix systemctl restart postfix postqueue -p # メールキューの表示(mailqコマンドでも可) postsuper -d queue_id # メールキューに溜まっているキューの削除 |
「~/.forward」を必要なユーザに追加し動作確認(/var/log/maillog)
rootへのメールは、運用上重要なメールが送信されるので、必ず「~/.forward」を設定し通常利用しているメールサーバ(@gmail.comなど)へ転送すること。
接続許可ホストのDB管理
接続許可ホストを設定ファイルに定義するのではなくDBで管理するとサービスの再起動が不要や管理が簡単になるのでお勧めです。
1 |
mynetworks = hash:/etc/postfix/network_table |
1 2 3 4 5 6 |
# # postmap /etc/postfix/network_table # 127.0.0.1 localhost 192.168.1.1 host01 192.168.2.10 hostA |
DBの更新
1 |
postmap /etc/postfix/network_table |
Gmail「メール送信者のガイドライン」改定(2024年2月)対策
ガイドラインの改定および技術的な解説を行っているサイトは、沢山あるのでそちらを参照。
「すべての送信者の要件」の前提条件で設定します。
前提条件
- ドメインに SPF または DKIM メール認証を設定します。
- 送信元のドメインまたは IP に、有効な正引きおよび逆引き DNS レコード(PTR レコードとも呼ばれます)を設定します。
- メールの送信に TLS 接続を使用します。
- メーリング リストや受信ゲートウェイを使用するなどして、メールを定期的に転送する場合は、送信メールに ARC ヘッダーを追加します。ARC ヘッダーによって、メールが転送されたことが示され、送信者が転送者と見なされます。メーリング リストの送信者は、メーリング リストを指定する List-id: ヘッダーも送信メールに追加する必要があります。
- 1.は、SPFまたはDKIMメール認証のどちらか(SPFはDNSの設定のみ)で可能との意味合いです。
- 2.は、IPアドレスに対して逆引き(逆引きしたFQDNが正引きできること)の設定を行っていることの意味で、SPFが設定されていても逆引きがエラーとなる場合は、メールの受信を拒否されます。なお、送信元のドメインのFQDNの正引きと逆引きが一致する必要はありません。(クラウド事業者で1固定IPを割り当てた場合、正引きと逆引きを一致することは不可能です。)
- 3.は、PostfixのTLS標準設定を利用します。
- 4.は、受信ゲートウェイを使用する(メールの転送)場合は、ARCヘッダーの追加を行い、MailmanではFrom の書き換え設定を行います。MailmanによるARCヘッダーの追加は、Mailman3からの機能です。(RHEL8系のMailmanでは、Fromの書き換えで対処します。)
- サブドメイン含めてトップドメイン全体で1日に5,000件の前提なので、自分の管理するサーバが1 日に5,000件送信しなくても、他のサブドメインのサーバも含めてすべてのサーバの合計で、1 日に5,000件のメールを送信する場合は、ガイドラインの「1 日あたり 5,000 件以上のメールを送信する場合の要件」で対応する必要があります。
SPFおよびIPアドレスの逆引き・正引き
各自の管理しているDNSサーバの設定方法で行います。受信も行うのであれば、MXレコードも設定します。
詳細は、技術的な解説を行っているサイトは、沢山あるのでそちらを参照すること。
※複数の固定IPを割り当てているISPで、申し出を行わないと逆引きの設定が行われていない場合があるので、確認して逆引き設定を行うこと。
DKIM認証(Header Fromの認証)
パッケージのインストール
1 |
dnf -y install opendkim opendkim-tools |
証明書の作成
セレクタ名は、任意の文字列のため「YYMMDD」を使用
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mkdir /etc/opendkim/keys/sec-portal.jp ## opendkim-genkey -D [ファイルの保存パス] -d [ドメイン名] -s [セレクタ名] opendkim-genkey -D /etc/opendkim/keys/sec-portal.jp/ -d sec-portal.jp -s 240118 chown -R opendkim:opendkim /etc/opendkim/keys/sec-portal.jp/ ls -la /etc/opendkim/keys/sec-portal.jp/ 合計 8.0K drwxr-xr-x 2 opendkim opendkim 46 1月 18 10:16 . drwxr-x--- 3 root opendkim 31 1月 18 10:10 .. -rw------- 1 opendkim opendkim 891 1月 18 10:16 240118.private -rw------- 1 opendkim opendkim 319 1月 18 10:16 240118.txt |
DNSの追加
DKIMの公開鍵を設定します。
「240118._domainkey.sec-portal.jp」形式のレコードを設定(DNSの設定方法は各システムの操作を参照すること)します。
1 2 3 4 5 6 7 8 |
cat /etc/opendkim/keys/sec-portal.jp/240118.txt 240118._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=公開鍵" ) ; ----- DKIM key 240118 for sec-portal.jp # 上記の内容を以下のDNSのTXTレコードで設定 240118._domainkey.sec-portal.jp. TXT "v=DKIM1; k=rsa; p=公開鍵" |
DNSの確認
1 2 3 |
dig -t txt 240118._domainkey.sec-portal.jp 240118._domainkey.sec-portal.jp. 300 IN TXT "v=DKIM1; k=rsa; p=公開鍵" |
OpenDKIMの設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
cp /etc/opendkim.conf /etc/opendkim.conf.orig vi /etc/opendkim.conf # モードの変更 s:送信時に署名する v:受信時に確認する Mode sv # OpenDKIMのソフトウェアバージョン秘匿 SoftwareHeader no #KeyfileではなくKeyTableを利用する。 #KeyFile /etc/opendkim/keys/default.private ← コメントアウト KeyTable /etc/opendkim/KeyTable ← #を外して有効化 # 署名するドメインの指定 SigningTable refile:/etc/opendkim/SigningTable ← #を外して有効化 # 外部ホストの特定 # 署名を付けるかの判断 ExternalIgnoreList refile:/etc/opendkim/TrustedHosts ← #を外して有効化 # 内部ホストの特定 # 署名を付けるかの判断 InternalHosts refile:/etc/opendkim/TrustedHosts ← #を外して有効化 Socket inet:8891@localhost ← #を外して有効化 #Socket local:/run/opendkim/opendkim.sock ← #をつけて無効化 |
KeyTableの設定
1 2 3 4 |
cp -p /etc/opendkim/KeyTable /etc/opendkim/KeyTable.orig vi /etc/opendkim/KeyTable 240118._domainkey.sec-portal.jp sec-portal.jp:240118:/etc/opendkim/keys/sec-portal.jp/240118.private |
SigningTableの設定
1 2 3 4 5 |
cp -p /etc/opendkim/SigningTable /etc/opendkim/SigningTable.orig vi /etc/opendkim/SigningTable *@sec-portal.jp 240118._domainkey.sec-portal.jp *@*.sec-portal.jp 240118._domainkey.sec-portal.jp # メールリレー時の署名の指定 |
TrustedHostsの設定
opendkim にキーを使用するホストを指定します。リストのホストは内部のマシンだと認識され、opendkim はメールに署名を行います。
1 2 3 4 5 6 7 8 9 |
cp /etc/opendkim/TrustedHosts /etc/opendkim/TrustedHosts.orig vi /etc/opendkim/TrustedHosts 127.0.0.1 ::1 #host.example.com #192.168.1.0/24 192.168.0.0/16 172.16.0.0/12 |
opendkimサービスの起動
1 2 3 4 5 6 |
systemctl start opendkim systemctl enable opendkim grep -i dkim /var/log/maillog ・・・ opendkim[60233]: OpenDKIM Filter v2.11.0 starting (args: -f -x /etc/opendkim.conf) |
Postfixの設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
vi /etc/postfix/main.cf # DKIM連携の設定 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891 milter_default_action = accept # メールリレー時のEnvelope-Fromの書き換え(SPF対策) sender_canonical_classes = envelope_sender sender_canonical_maps = regexp:/etc/postfix/sender_canonical.regexp local_header_rewrite_clients = static:all vi /etc/postfix/sender_canonical.regexp /(.*+)@(.+)$/ $1@sec-portal.jp |
Postfixサービスの再起動
1 2 3 4 5 6 7 |
systemctl restart postfix # メール送信時に正常にDKIMメッセージが挿入されると以下のログが記録される。 grep DKIM /var/log/maillog ・・・ opendkim[354046]: 22BF740193AD6: DKIM-Signature field added (s=240118, d=sec-portal.jp) |
ARC署名
パッケージの追加
1 |
dnf -y install openarc |
秘密鍵の作成
OpenDKIMと同じ秘密鍵を使うのでコピーする。
1 2 |
cp /etc/opendkim/keys/sec-portal.jp/240118.private /etc/openarc chown openarc.openarc /etc/openarc/240118.private |
OpenARCの設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
cp /etc/openarc.conf /etc/openarc.conf.orig # 変更内容 diff /etc/openarc.conf /etc/openarc.conf.orig 2c2 < PidFile /run/openarc/openarc.pid --- > #PidFile /run/openarc/openarc.pid 5,6c5 < #Socket local:/run/openarc/openarc.sock < Socket inet:8892@localhost --- > Socket local:/run/openarc/openarc.sock 15,19c14,18 < Mode sv < Canonicalization relaxed/simple < Domain sec-portal.jp < Selector 240118 < KeyFile /etc/openarc/240118.private --- > #Mode sv > #Canonicalization relaxed/simple > #Domain example.com # change to domain > #Selector key > #KeyFile /etc/openarc/key.private # 設定ファイルのチェック openarc -n |
OpenARCの起動
1 2 |
systemctl start openarc systemctl enable openarc |
Postfixの設定
1 2 3 4 5 |
vi /etc/postfix/main.cf smtpd_milters = inet:127.0.0.1:8891, inet:127.0.0.1:8892 non_smtpd_milters = inet:127.0.0.1:8891, inet:127.0.0.1:8892 milter_default_action = accept |
Postfixサービスの再起動
1 |
systemctl restart postfix |
動作確認
- Gmailに送信して「メッセージのソース」を表示するとSPF・DKIM等の判定が表示される。
- メールのリレー元のPostfixは、「relayhost」で本サーバを指定する。
- Mailmanの場合は、以下の設定を追加する。
全体的オプション
From: ヘッダーのメールアドレスをリストの投稿アドレスに置き換え、 元の From: ドメインの DMARC あるいは類似のポリシーにより 生じる問題を緩和します。
→ 「From を書き換え」を選択する。