自分のためのメモ
大抵の人には役に立たない情報です。
とある事情で、あるドメイン名の全部のユーザーのメールの送信のためだけのsmtpサーバーが必要になって、すでに稼働しているposftfix adminのvirtual domain環境にそのドメイン名を追加登録して全ユーザーの登録をしてssl/smtp-auth なsmtpとして使った時のお話。
自分のためのメモ
大抵の人には役に立たない情報です。
とある事情で、あるドメイン名の全部のユーザーのメールの送信のためだけのsmtpサーバーが必要になって、すでに稼働しているposftfix adminのvirtual domain環境にそのドメイン名を追加登録して全ユーザーの登録をしてssl/smtp-auth なsmtpとして使った時のお話。
こっちに来てからしばらくbigpondのダイアルアップを使っていたが昨日からADSL環境に変わりました。そうしたら突然自分のSMTPサー バー経由でメールが送れなくなったのでADSL回線ではOutbound Port 25 Blocking(OP25B)を行なっていることがわかりました。
そこで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
sasl2を入れてsmtp-authを有効にするために/usr/local/etc/postfix/main.cfに以下を追加。
#################### # SMTP AUTH w/SALS2 # smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
/usr/local/lib/sasl2/smtpd.confを作る。
# cat /usr/local/lib/sasl2/smtpd.conf pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: cram-md5 digest-md5 plain login
/etc/sasldb2を用意しておく。
# touch /etc/sasldb2 # chown postfix:postfix /etc/sasldb2
smtp-authのユーザーを作る。
# saslpasswd2 -c -u `postconf -h myhostname` username
パスワードを二回訊いてくるので入力する。
ユーザーのパスワードの変更
# saslpasswd2 -u `postconf -h myhostname` username
同じくパスワードを二回訊いてくるので入力する。
ユーザーの削除
# saslpasswd2 -u `postconf -h myhostname` -d username
ユーザーの確認
# sasldblistusers2