Postfix や Dovecot がSNI対応したので、自分の好きなメールサーバー名でメール設定ができるようにしてみた。
目的
現在 mail.example.net のホスト名をメール設定に使っている環境で、mail.example.com, smtp.example.com, pop.example.com, imap.example.com 等の異なるドメイン名のホスト名を複数追加してメール設定に使えるようにしたい。
Postfix や Dovecot がSNI対応したので、自分の好きなメールサーバー名でメール設定ができるようにしてみた。
現在 mail.example.net のホスト名をメール設定に使っている環境で、mail.example.com, smtp.example.com, pop.example.com, imap.example.com 等の異なるドメイン名のホスト名を複数追加してメール設定に使えるようにしたい。
とある事情で、あるドメイン名の全部のユーザーのメールの送信のためだけのsmtpサーバーが必要になって、すでに稼働しているposftfix adminのvirtual domain環境にそのドメイン名を追加登録して全ユーザーの登録をしてssl/smtp-auth なsmtpとして使った時のお話。
そこでpostfixでサブミッションポートの設定をしました。
要するに25番ポートでSMTPを叩くのではなく別のポート(587)でSMTPを叩いて25番ポートのブロックを回避するというものです。当然その別のポートは素のSMTPではなくSMTP-AUTHとかでユーザー認証を行なうように設定されていないといけません。
自分のところのpostfixでは元々SMTP-AUTHで使っていたので単にサブミッションポートを使えるようにすればOKでした。
/usr/local/etc/postfix/master.cf に対し、
submission inet n - n - - smtpd -o smtpd_etrn_restrictions=reject -o smtpd_client_restrictions=permit_sasl_authenticated,reject
の設定を行なって postfix reload でOK。
あとは、メールクライアントの SMTPポートを25から587に変更すればOK。
postfixでvirtual domainを使えるようにする。
/usr/local/etc/postfix/main.cf のmydestinationにvirtual domainで使いたいドメイン名を追記する。具体的には、
mydestination = $myhostname, localhost.$mydomain $mydomain ほげほげドメイン1 ほげほげドメイン2 ほげほげドメイン3 ほげほげドメイン4
と行頭にスペースを入れたドメイン名リストを追記すればOK。さらに、main.cfに、
virtual_maps = hash:/usr/local/etc/postfix/virtual
を追記。
/usr/local/etc/postfix/virtualというファイルを下記のように作る。
hoge1@ほげほげドメイン1(tab)受け取るアカウント1 hoge2@ほげほげドメイン2(tab)受け取るアカウント2 hoge3@ほげほげドメイン3(tab)受け取るアカウント3 hoge4@ほげほげドメイン4(tab)受け取るアカウント4
そんでもって、
# postmap /usr/local/etc/postfix/virtual # postfix reload
で使えるようになる。
「送信元のIPアドレスによる制限」を行う。
/usr/local/etc/postfix/main.cf に下記を追加
############### # sender restriction # smtpd_client_restrictions = permit_mynetworks check_client_access hash:/usr/local/etc/postfix/reject_client
/usr/local/etc/postfix/reject_client を下記のように作成。
IPアドレス1(tab)REJECT IPアドレス2(tab)REJECT IPアドレス3(tab)REJECT
DBファイル作成してpostfixを再起動
# postmap /usr/local/etc/postfix/reject_client # postfix reload