Ubuntu 12.04 TLSに拡張アドレスに対応したMTAサービスがほしい。
今時なので、SSL/TLSで経路暗号化とSMTP AUTHも必要。
ということで、Postfix 2.9.1-5 と libsasl2 2.1.25 をsetupした。
拡張アドレスとは、xxx@foobar.com というアドレスのほか、xxx-forspam@foobar.com というように、「-」などで区切ったメイルアドレスも使えるようにする機能。
Postfixは、デフォルトの区切り文字が「+」なので、「-」に変更した。
1. SMTP AUTH認証用に sasl2をinstall
ubuntuなので、apt-get でOK。% sudo apt-get install sasl2-bin libsasl2-modules
2. Postfix の設定
/etc/postfix/main.cf で SSL/TLS と、SMTP AUTH、Maildir、拡張アドレスの拡張文字列「-」を設定。smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache home_mailbox = Maildir/ recipient_delimiter = - smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
/etc/postfix/master.cf で、submission(port:587)とsmtps(port:465)を設定。
chrootは、なし。
# service type private unpriv chroot wakeup maxproc command + args submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
/etc/postfix/sasl/smtpd.conf で、SMTPの認証を設定。
pwcheck_method: saslauthd mech_list: plain login
3. 拡張アドレスの設定
qmailの時は、「$HOME/.qmal-拡張suffix文字列」というファイルに内容「./Maildir」だった。 Postfixは「$HOME/.forward-拡張suffix文字列」に変更。4. SMTP のテスト
通常のSMTP(port:25)は、telnet で試す。 下記の例は、メールサーバを「mail.foobar.com」としたもの。% telnet mail.foobar.com 25 Trying XXX.XXX.XX.XX ... Connected to foorbar.com. Escape character is '^]'. 220 foobar.com ESMTP Postfix (Ubuntu) HELO foobar.com 250 mail.foobar.com MAIL FROM: user01@foobar.com 250 2.1.0 Ok RCPT TO: user01@gmail.com 554 5.7.1: Relay access denied QUIT 221 2.0.0 Bye Connection closed by foreign host.
ちゃんとつながって、不正中継を防ぐところまで確認。
smtps は、openssl で試す。
そのために、SMTP AUTHのPLAIN認証用文字列を先に作っておく。
% perl': ^Crl -MMIME::Base64 -e 'print encode_base64("ユーザ名\0ユーザ名\0パスワード")
ユーザ名「TEST」、パスワード「TEST_PASS」なら、以下のように表示される。
VEVTVABURVNUAFRFU1RfUEFTUw==
これが後で、SMTP AUTHの認証用文字列となる。
% openssl s_client -connect xxxx.jp:465 .... たくさんのダンプ 220 foobar.com ESMTP Postfix (Ubuntu) HELO foobar.com 250 mail.foobar.com AUTH PLAIN 334 VEVTVABURVNUAFRFU1RfUEFTUw== 235 2.7.0 Authentication successful QUIT
「AUTH PLAIN」と認証用文字列の入力後、「Authentication successful」と表示されると、SMTP AUTH成功。
外部へのメイル送信も、「Relay access denied(不正中継)」といわれずに、成功できるようになる。
ここまでできれば、submission もきっと大丈夫。
5. クライアントのメイルソフトの設定
SMTP AUTH(over SSL)
接続の保護「SSL/TLS」。認証方式「通常のパスワード」。
ポート番号465。
SMTP AUTH(submission STARTTLS)。
接続の保護「STARTTLS」。認証方式「通常のパスワード」。
ポート番号587。
コメント