SMTP 認証ありでの SMTP 伝送確認
ここまで、アカウント管理用の postfixadmin の設定、 SMTP の設定、 Dovecot の設定とやってきたが、このままだとセキュリティ上に問題があるので、ここから postfix でSMTP 認証および SSL/TLS をつかえるように設定していく。
postfix の main.cf の設定
基本的な設定が終わったあとの main.cf に追記していく。
$ sudo vi /etc/postfix/main.cf # SSLの証明書や鍵等 smtpd_tls_cert_file = /usr/local/etc/ssl/server/niboshi.kakitsubata-ayame.jp/server.crt smtpd_tls_key_file = /usr/local/etc/ssl/server/niboshi.kakitsubata-ayame.jp/newkey.pem smtpd_tls_CAfile = /usr/local/etc/ssl/demoCA/cacert.crt smtpd_tls_CApath = /usr/local/etc/ssl/demoCA # SASLによるAUTHを行う smtpd_sasl_auth_enable = yes # 匿名での接続を拒否する smtpd_sasl_security_options = noanonymous # OutlookExpress4用設定…うちでは使ってないので不要 ##broken_sasl_auth_clients=yes # SMTP認証にdovecot-saslを使う smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth # $mynetworksと認証を通ったものを通す smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, # TLSのログ設定 smtpd_tls_loglevel = 1 # TLSを使う smtpd_use_tls = yes # TLS使用時のみSMTP認証を使う→TLSを使わない場合外部に送れない smtpd_tls_auth_only = yes # TLSを促す smtp_tls_note_starttls_offer = yes # キャッシュと乱数の設定 smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache tls_daemon_random_source = dev:/dev/urandom
postfix の master.cf の設定
これだけでは SMTPS のポート待受ができず送信できない (ちょっとハマった)。 master.cf も編集する。
$ sudo vi /etc/postfix/master.cf #コメントアウトされているので外してやる -#smtps inet n - n - - smtpd -# -o smtpd_tls_wrappermode=yes -# -o smtpd_sasl_auth_enable=yes +smtps inet n - n - - smtpd + -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
postfix の再起動と送信テストを行う
再起動する。
$ sudo /etc/init.d/postfix restart 再起動 $ netstat -an --tcp tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN ポート確認
送信テストはクライアント PC のメールソフトを使う。クライアント PC のファイアウォールを無効にして
- Port25 で SMTP 認証有/無でプロバイダのメールアドレス宛に送ってみる
- パスワードを間違えてみる
- Port465 で SMTPS の接続確認
- Port465 で SMTP 認証有/無でプロバイダのメールアドレス宛にに送ってみる
- 各種ログ確認
等々行えばいいかなと思う。プロバイダの外 (ケータイ等) へはまだ送れないと思う。最終的には外部 (ケータイ) への転送をができることも目的としているので、次でいわゆる OP25B 対策も施しておく。
OP25B 対策
main.cf に外部 relay を行うように書けばプロバイダから外へメールを送ることが可能になる。
$ sudo vi /etc/postfix/main.cf #-------------------------------- # * for OP25B * #------------------------------- relayhost = [vsmtp.xxxx.xxx.xxx.jp]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/isp_passwd smtp_sasl_security_options = noanonymous smtp_sasl_mechanism_filter = PLAIN, LOGIN
relayhost の項目には自分が使っているプロバイダの SMTP サーバの情報を記入する。
また、この relayhost で行う認証について smtp_sasl_password_maps で記載したファイルに記入する。
$ sudo vi /etc/postfix/isp_passwd [vsmtp.xxxx.xxx.xxx.jp]:587 ユーザ名 パスワード
終わったら、ハッシュファイルにして、その後 postfix を再起動する。
$ sudo postmap /etc/postfix/isp_passwd
$ sudo /etc/init.d/postfix restart
生パスワードが書かれているので ips_passwd が外から見えないように権限を設定しておく。
$ sudo chgrp postfix isp_passwd* $ sudo chmod 640 isp_passwd* $ ls -la isp_passwd* -rw-r----- 1 root postfix 163 Mar 29 23:01 isp_passwd -rw-r----- 1 root postfix 12288 Mar 29 23:01 isp_passwd.db
テスト
ここまでできたら、内部→外部 (ケータイ)→内部 でメール送信してみればいい。
- 目次