現状ではmydomain.com宛の電子メールをmail.mydomain.comという仮想ホストにより受信しドメイン内部に転送している。
新たにml.mydomain.comという仮想ホストを作成し、@ml.mydomanin.com宛のメールをfetchmailを通してpostfixに渡し、mailmanでメーリングリストの処理をさせる。
・DNSの設定
DNSに以下のレコードを追加する
@ IN TXT v=spf1 ip4:xx.xx.xx.xx include:outgoing.com -all
_dmarc IN TXT v=DMARC1; p=none; rua=mailto:dmarc_rua@mydomain.com; ruf=mailto:dmarc_ruf@mydomain.com
IN MX 10 mail.mydomain.com.
mail IN A mydomain.com
ml IN A mydomain.com
外部へのメールを外部のメールサーバー経由で送っているなら、SPFレコードにそのサーバーを追加しておく。
メーリングリストはml.mydomain.comのアドレスを使用しているため、サブドメインにもSPFレコードを追加しておく。MAIL FROM:で指定したエンベロープFromのホストのSPFレコードをチェックされるため。
Amazon SES経由で送る場合は、SPFレコードは必要ないらしい。DMARCのレポートで、policy_evaluatedセクションが<spf>=failとなっていたため気になって調べたが、問題ないらしい。
https://qiita.com/Moo_Moo_Farm/items/656826526b340694a9d8
外部向けapache(xampp)の設定変更
後述のサーバー証明書を更新するために仮想ホストml.mydomain.com を追加する。
ただし、/.well-knownだけは、win-acmeがチェック時にこのサーバー内を書き換えるため、除外する。
C:\xampp\apache\conf\extra\httpd-vhost.conf
ServerAlias ${DOMAIN} ftp.${DOMAIN} mail.${DOMAIN}
↓
ServerAlias ${DOMAIN} ftp.${DOMAIN} mail.${DOMAIN} ml.${DOMAIN}
RewriteCond %{REQUEST_URI} !^/\.well-known
↓
RewriteCond %{REQUEST_URI} !^/\.well-known
RewriteCond %{HTTPS} off
ml.mydomain.comは別のapacheで動いているので、リバースプロキシーで飛ばす。
C:\xampp\apache\conf\extra\httpd-ssd.conf
<VirtualHost *:443>
ServerAdmin postmaster@${DOMAIN}
ServerName ml.${DOMAIN}
ErrorLog "| bin/rotatelogs.exe logs/ml.${DOMAIN}-SSL-error_%Y-%m.log 86400 540"
CustomLog "| bin/rotatelogs.exe logs/ml.${DOMAIN}-SSL-access_%Y-%m.log 86400 540" combined
SSLEngine on
SSLCertificateFile "conf/certs/${DOMAIN}-chain.pem"
SSLCertificateKeyFile "conf/certs/${DOMAIN}-key.pem"
ProxyRequests Off
ProxyPass / http://ml.${DOMAIN}:9080/
ProxyPassReverse / http://ml.${DOMAIN}:9080/
</VirtualHost>
サーバー証明書の更新
既存のサーバー証明書ににml.mydomain.comを追加する
> win-acme.exe
A: Manage renewals (1 total)
Please choose from the menu: a
D: Show details for the renewal
Choose an action or type numbers to select renewals: d
E: Edit renewal
Choose an action or type numbers to select renewals: e
2: Source
Which step do you want to edit?: 2
2: Manual input
How shall we determine the domain(s) to include in the certificate?: 2
Host: mydomanin.com,ftp.mydomanin.com,mail.mydomanin.com,ml.mydomanin.com,www.mydomanin.com
Friendly name '[Manual] mydomanin.com'. <Enter> to accept or type desired name: mydomanin.com
追加されたホストのみが確認され新しい証明書が作成される。有効期限は変わらない。
・MercuryMailの設定
全メーリングリストで使用するメールアカウントを作成する
ユーザー名:mailman
このメールアカウントを、Configurationー”Mercury Core Module Configuration”ー”Local Domains” にドメインメールボックスとして追加する
Core ModuleーFiles
Internet name for this system: mail.mydomain.com
↓
Internet name for this system: mydomain.com
Core ModuleーLocal Domains
追加
↓
localhost mail.mydomain.com
DM=mailman ml.mydomain.com
・postfixの設定
SMTP サーバによる知らないローカル受信者拒否を無効にする(要は知らない名前でも受け付ける)
$ sudo vi /etc/postfix/main.cf
#local_recipient_maps =
↓
local_recipient_maps =
・mailmanの設定
なし
・farchmailの設定
なし