CentOS 6になると、MTAがpostfixがデフォルトになります。postfix単体ではPOP before SMTPには対応していないので、pop-before-smtpを実現するものを組み込む必要があります。drac + drac_pluginでも、できるとブログに記載していましたが、自分のさくらのVPSでは、drac_pluginをビルド中に、-fPICを付けてrecompileしろとかで失敗してしまう。いろいろ試したが、drac方式は諦めました。
pop-before-smtp-1.42を使用して、postfix + dovecot環境で、POP before SMTP方式を、SMTP認証と共存できたので、方法を残して起きます。
まず、pop-before-smtp-1.42 をここからダウンロードします。
適当なフォルダで展開して、プログラム、設定ファイル、起動スクリプトをコピーします。
cp pop-before-smtp /usr/sbin cp pop-before-smtp-conf.pl /etc cp pop-before-smtp.init
使用しているPOP3のところのコメントを削除します。dovecotを使っているので、dovecotのところをコメント削除しました。
# For Dovecot POP3/IMAP when using syslog. $pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' . 'Login: .*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]'; $out_pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' . 'Disconnected.*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';
BerkeleyDBを使うので、以下=cutを削除。場合によってはperl-BerkeleyDBでperlのBerkerleyDBライブラリをインストールします。
=cut #====================== Postfix BerkeleyDB =======================START= =cut #====================== Postfix BerkeleyDB =======================END=
main.cfの以下部分を変更します。
check_client_access_pbs = check_client_access hash:/etc/postfix/pop-before-smtp smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,$check_client_access_pbs,reject_unauth_destination
最後に、サブミッションポートでPOP before SMTP認証を有効にします。
submission inet n – n – – smtpd
# -o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
POP before SMTP自体ISPでもサービス終了する中、未だに使い続けているところがあります。迷惑メールの踏み台にされないために、SMTP認証に移行するのが望ましいと考えます。マイVPSサーバーも検証で試しただけで、検証後は無効化しました。