しばらく運用して問題点が出てきたので解決する。
- サブドメインから送ったメールがAuthentication-Resultsセクションでdkim-adsp=noneとなる。
- 毎日06:30ごろにroot宛にCronのエラーメールが来る。
- リンゴの絵がついた携帯から投稿すると文字化けして配送される。
1.サブドメインから送ったメールがAuthentication-Resultsセクションでdkim-adsp=noneとなる
サブドメインml.mydomain.comにspfとdkimが必要らしい。以下のサブドメインに対してそれぞれ設定を行う。
mail.mydomain.com ml.mydomain.com
・サブドメインにSPFレコードを追加する
TXT,mail.mydomain.com v=spf1 include:mydomain.com -all
・Amazon SESでサブドメインにDKIMを追加する
Amazon SESコンソールを開く Configurationの下のVerified identitiesをクリック Create identityを押す、identity typeのDomainをチェック Domainにサブドメイン名を入力 mail.mydomain.com Assign a default configuration set: off Use a custom MAIL FROM domain: off Create identifyを押す 作成されたLegacy TXT RecordsとPublish DNS recordsをDNSに追加する TXT,_amazonses.mail.mydomain.com,xxxxx TXT,mail.mydomain.com,amazonses:xxxxx CNAME,xxx._domainkey.mail.mydomain.com,xxx.dkim.amazonses.com CNAME,yyy._domainkey.mail.mydomain.com,yyy.dkim.amazonses.com CNAME,zzz._domainkey.mail.mydomain.com,zzz.dkim.amazonses.com
しばらくしてAWS側の検証が完了すると、DKIM setup SUCCESS for ドメイン という件名のメールがAWSアカウント宛に届く
これでdkim-adsp=passとなっているはずなので、サブドメインからメールを送って確認する。
・元のドメインのDKIMを見てみるとキー長が1024ビットだったので2048ビットに変えておく。
SESではキー長を変更する場合には以下の制限があるらしい
・同じ長さには変えられない ・24時間内に別のキー長に2回以上変えられない(その期間の最初のダウングレードを除く)
キー長の変更手順
Amazon SESコンソールを開く Configurationの下のVerified identitiesをクリック 対象のアイテム(ドメイン)をクリックする AuthenticationタブのDomainKeys Identified Mail (DKIM)にあるEditを押す DKIM signing key lengthの RSA_2048_BIT か RSA_1024_BIT を選ぶ Save changesを押す 次に送られるメールからは、キー長が変わるらしい。
・追加したサブドメインにバウンス対応用のSNS通知を設定しておく
2.毎日06:30ごろにroot宛にCronのエラーメールが来る
Cron <root@xxxx> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
/etc/cron.daily/logrotate:
invoke-rc.d: could not determine current runlevel
WSLではinvoke-rc.dはエラーとなるが、誰かが動かそうとしているらしい。
実行階層の解析 /etc/crontab: ( cd / && run-parts --report /etc/cron.daily ) /etc/cron.dairy/logrotate /usr/sbin/logrotate /etc/logrotate.conf: include /etc/logrotate.d /etc/logrotate.d/rsyslog /usr/lib/rsyslog/rsysrog-rotate invoke-rc.d rsyslog rotate > /dev/null
rsysrog-rotate内でinvoke-rc.d が実行されていた。
invoke-rc.d rsyslog rotate > /dev/null
rsysrog-rotateファイルを書き換える。
$ sudo vi /usr/lib/rsyslog/rsysrog-rotate
invoke-rc.d rsyslog rotate > /dev/null
↓
/etc/init.d/rsyslog rotate > /dev/null
リンゴの絵がついた携帯から投稿すると文字化けして配送される
届いたメールのヘッダーにによるとutf-8エンコードされた後にbase64エンコードされている。
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
mailmanがbase64デコードをせずに、base64エンコードされた文字列をそのままutf-8として解釈して転送しているので文字化けしているのかもしれない。
以下のサイトにあるbase64デコードフィルターを追加することにした。
https://yamagata.int21h.jp/tool/gmail-filter/
上記サイトの内容でスクリプトファイルを作成する。先頭行は環境に合わせて書き換える。
$ sudo vi /usr/local/bin/base64-filter.pl
#!/usr/bin/perl
...
$ sudo chomd +x /usr/local/bin/base64-filter.pl
postfix用のaliasesファイルですべてのメーリングリスト名の行を書き換える。
$ sudo vi /var/lib/mailman/data/aliases
mailman: "|/var/lib/mailman/mail/mailman post mailman"
↓
mailman: "|/usr/local/bin/base64-filter.pl |/var/lib/mailman/mail/mailman post mailman"
$ sudo newaliases
aliasデータベースを更新するのを忘れずに。
$ sudo newaliases
注意点として、メーリングリストの追加・削除や手動で/usr/lib/mailman/bin/genaliasesを実行したときには、このファイルが更新され、フィルターの記述が消えるので、都度編集する必要がある。