今回は前回のPostfixの構築を土台として、DKIMの設定をしていきます。
環境
- サーバ -> Raspberry Pi3
- DDNS -> MyDNS
関連
DDNSを使って自宅サーバからメールを送信する Postfix設定編 DDNSを使って自宅サーバからメールを送信する SPF設定編 DDNSを使って自宅サーバからメールを送信する DKIM設定編DKIMの設定
先程はSPFの設定をしましたが、今度はDKIMの設定をします。
これは、言わゆる電子署名付きメールで、送信者の正当性とメール自体が改ざんされていないという完全性を検証することができます。
この設定は多少手数が多く面倒な部分がありますのでご注意ください。
またこの設定は下記のサイトに沿って行っていきます。
参考 Configure SPF and DKIM in Postfix on Debian 8www.linode.comサーバにOpenDKIMをインストール
sudo apt-get install opendkim opendkim-tools postfix-pcre
そして、このOpenDKIMを扱うpostfixというユーザをopendkimに追加します。
sudo adduser postfix opendkim
設定ファイルの編集
先程のインストールでOpenDKIMの設定ファイルができたので、設定ファイルのバックアップを取ってから編集していきます。
sudo mkdir /etc/opendkim sudo mkdir /etc/opendkim/keys cd /etc sudo cp opendkim.conf opendkim/opendkim-copied.conf
あとは以下のコードで上書きしてください。
#/etc/opendkim.conf # This is a basic configuration that can easily be adapted to suit a standard # installation. For more advanced options, see opendkim.conf(5) and/or # /usr/share/doc/opendkim/examples/opendkim.conf.sample. # Log to syslog Syslog yes # Required to use local socket with MTAs that access the socket as a non- # privileged user (e.g. Postfix) UMask 002 # OpenDKIM user # Remember to add user postfix to group opendkim UserID opendkim # Map domains in From addresses to keys used to sign messages KeyTable /etc/opendkim/key.table SigningTable refile:/etc/opendkim/signing.table # Hosts to ignore when verifying signatures ExternalIgnoreList /etc/opendkim/trusted.hosts InternalHosts /etc/opendkim/trusted.hosts # Commonly-used options; the commented-out versions show the defaults. Canonicalization relaxed/simple Mode sv SubDomains no #ADSPAction continue AutoRestart yes AutoRestartRate 10/1M Background yes DNSTimeout 5 SignatureAlgorithm rsa-sha256 # Always oversign From (sign using actual From and a null From to prevent # malicious signatures header fields (From and/or others) between the signer # and the verifier. From is oversigned by default in the Debian package # because it is often the identity key used by reputation systems and thus # somewhat security sensitive. OversignHeaders From
/etc/default/opendkimの内容にSocketとPidFileの記述があるはずですが、なぜかうまく認識されない事がありました。
その際は、このopendkim.confの一番下の行に
Socket local:/var/spool/postfix/opendkim/opendkim.sock PidFile /var/run/opendkim/opendkim.pid
を記述するとうまく動作しました。
sudo chmod u=rw,go=r /etc/opendkim.conf sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod go-rw /etc/opendkim/keys
続いて /etc/opendkim/signing.table 作ります。
sudo nano /etc/opendkim/signing.table
exampleの中にはメールアドレスのドメイン名をいれてください。
*@example.com example
続いて /etc/opendkim/key.table 作ります。
sudo nano /etc/opendkim/key.table
exampleは先程と同様に、YYYYMMには本日の日付(例:201707)をいれてください。
example example.com:YYYYMM:/etc/opendkim/keys/example.private
続いて /etc/opendkim/trusted.hosts を作ります。
sudo nano /etc/opendkim/trusted.hosts
exampleは先程と同様にいれてください。
127.0.0.1 ::1 localhost myhostname myhostname.example.com example.com
ここでパーミッションとオーナーの変更をします。
sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod -R go-rwx /etc/opendkim/keys
そして、キーの生成をします。
exampleは先程と同様に、YYYYMMには本日の日付(例:201707)をいれてください。
cd /etc/opendkim sudo opendkim-genkey -b 1024 -h rsa-sha256 -r -s YYYYMM -d example.com -v
名前を変更後、パーミッションの変更をします。
sudo mv YYYYMM.private keys/example.private sudo mv YYYYMM.txt example.txt sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod -R go-rw /etc/opendkim/keys
OpenDKIMを再起動します。
sudo systemctl restart opendkim #もしエラーが出る場合はこちらで確認してください sudo systemctl status -l opendkim
TXTレコードの追記
先程名前を変更した /etc/opendkim/example.txt の中をTXTレコードとして設定します。
cd /etc/opendkim/ sudo cat example.txt
MyDNS上の先程のサイトに戻りTXTを追記します。
Hostname | Type | Contet |
---|---|---|
YYYYMM._domainkey | TXT | v=DKIM1; h=sha256; k=rsa; s=email; p=暗号キー |
次に今設定した情報のテストをします。
opendkim-testkey -d example.com -s YYYYMM
このコマンドを入力して何も出力がなければ大丈夫です。
「key OK」の前に「key not secure」が出力される場合はDNSSECに対応していないという警告なので問題ありません。
PostfixとOpenDKIMの連携
ディレクトリを作り、オーナーを変更します。
sudo mkdir /var/spool/postfix/opendkim sudo chown opendkim:postfix /var/spool/postfix/opendkim
次に /etc/default/opendkim を編集します。
sudo nano /etc/default/opendkim
ここで最初のSOCKETをアンコメントするのですが、Debian8の場合パスが違っているので以下のように変更します。
# Command-line options specified here will override the contents of # /etc/opendkim.conf. See opendkim(8) for a complete list of options. #DAEMON_OPTS="" # # Uncomment to specify an alternate socket # Note that setting this will override any Socket value in opendkim.conf SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock" #SOCKET="inet:54321" # listen on all interfaces on port 54321 #SOCKET="inet:12345@localhost" # listen on loopback on port 12345 #SOCKET="inet:[email protected]" # listen on 192.0.2.1 on port 12345
最後に /etc/postfix/main.cf を編集します。
これは最後の方に書き足すだけで大丈夫です。
sudo nano /etc/postfix/main.cf
# Milter configuration # OpenDKIM milter_default_action = accept # Postfix ≥ 2.6 milter_protocol = 6, Postfix ≤ 2.5 milter_protocol = 2 milter_protocol = 6 smtpd_milters = unix:/opendkim/opendkim.sock non_smtpd_milters = unix:/opendkim/opendkim.sock
そして、OpenDKIMとPostfixを再起動させます。
sudo systemctl restart opendkim sudo systemctl restart postfix
これで完了となります。
送信テスト
先ほどと同様にsendmailコマンドを利用して、メールを送信します。
sendmail 相手先のメールアドレス From: 別名を書いてもいい<送信側のメールアドレス> To: 相手先のメールアドレス Subject: Hello! 本文 .
確認
Gmailの場合は届いたメールの返信マーク横の下三角から「メッセージのソースを表示」で見ることができます。
ここで「元のメッセージ」の「DKIM」欄がPASSになっていれば成功です。
DDNSを使って自宅サーバからメールを送信する Postfix設定編 DDNSを使って自宅サーバからメールを送信する SPF設定編 DDNSを使って自宅サーバからメールを送信する DKIM設定編
コメントを残す