読者です 読者をやめる 読者になる 読者になる

bz0のにっき

ログ置き場

Postfixでメール送信の為の設定

Postfix SPF

サーバからメール送信したかったのでpostfixの設定からやってみました。

ゴールとしては、下記です。

  • SPFが「PASS」になる
  • DKIMが「pass」になる

環境

Postfix設定

下記設定を参考にしました。

メールサーバー構築(Postfix+Dovecot) - CentOSで自宅サーバー構築
[Postfix]SPFレコードを設定して携帯へメールを送信できるようにする | 本日も乙
Postfixをインストールしてメール送信してみる | 本日も乙

mx.kzz.bzをmyhostnameに設定する理由は、下記です。

1つのサーバで複数のサーバー(ウェブサーバー、メールサーバーなど)を運用する場合には、メールサーバー用に独自のホスト名を割り当てるようにします。

Postfix のインストールと設定 〜 CentOS6 | EasyRamble

myhostnameにメールサーバ用に独自のホスト名を割り当てた場合は
下記追記を忘れずに行います。

でないと、SPF認証ができずに「none」になってしまいます。

# sudo vim /etc/postfix/main.cf
sender_canonical_classes = envelope_sender
sender_canonical_maps = hash:/etc/postfix/sender_canonical
# sudo vim /etc/postfix/sender_canonical 
@mx.kzz.bz @kzz.bz
 
# sudo postmap /etc/postfix/sender_canonical

# sudo service postfix restart

DNS設定

DNSの解説 for ビギナー

最終的に下記のようにしました。

ホスト名 TYPE TTL VALUE
kzz.bz A 60 133.242.184.146
mx.kzz.bz A 60 133.242.184.146
kzz.bz MX 60 mx.kzz.bz /10
kzz.bz TXT 60 v=spf1 +ip4:133.242.184.146 -all
_adsp._domainkey.kzz.bz TXT 60 dkim=unknown
kzz_20170108._domainkey.kzz.bz TXT 60 v=DKIM1; k=rsa; p=[公開鍵]

・メールサーバ用のドメイン(mx.kzz.bz)をIPと紐づける

ホスト名 TYPE TTL VALUE
mx.kzz.bz A 60 133.242.184.146


・@kzz.bzのメールを送受信するメールサーバのホストは「mx.example.com」だと
 メールクライアント(メール送信時)やメールサーバ(メール受信時)に教えてあげるための設定

ホスト名 TYPE TTL VALUE
kzz.bz MX 60 mx.kzz.bz /10


・kzz.bzが送り主のメールは、「133.242.184.146」から送られてきたものでなければ拒否してよいという設定

ホスト名 TYPE TTL VALUE
kzz.bz TXT 60 v=spf1 +ip4:133.242.184.146 -all


SPFが「pass」になりました。

Received-SPF: pass (mx.kzz.bz: domain of root@kzz.bz designates 133.242.184.146 as permitted sender)

逆引き設定

「pass」にはなりましたが、逆引き設定してないので、対応します。
送信したメールが受信側でsoftfail となる場合の対処メモ - The Second Longest Day in My Life...

サーバは、さくらVPSの為コンソール画面から逆引き設定を変更します。
DNS逆引きレコードを変更する – さくらのサポート情報

DKIM設定

DKIMとは何か、利点については下記がわかりやすかったです。
FAQ | dkim.jp


設定は、下記を参考に行いました。
Postfix DKIM 認証 設定メモ(CentOS6.5+OpenDKIM) | あぱーブログ

設定前のメールヘッダ:

domainkeys=neutral (no sig); dkim=neutral (no sig); header.i=@kzz.bz

設定後のメールヘッダ:

domainkeys=neutral (no sig); dkim=pass (ok); header.i=@kzz.bz