マソム自宅サーバ構築の記録

  • postfix2.4でのSMTP-AUTHとTLS
  • 作成日:07/10/01    更新日:09/08/07

SMTP-AUTH

LINUXのシステムアカウントを使ったplain認証を行う設定をします。

saslauthdのインストール

cyrus-sasl、cyrus-sasl-plain、cyrus-sasl-md5パッケージの内で、cyrus-sasl-md5が無かったのでyumでインストールしました。
パージョンは2.1.22-6です。
saslauthdの設定ファイル/usr/lib/sasl2/smtpd.confは以下のようにplain認証の設定になっているので、今は変更しません。
# vi /usr/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login

saslauthdの起動

saslauthdを起動します。
# /etc/init.d/saslauthd start
オプション -a shadow が付いて起動します。/etc/shadowファイルを認証に使うオプションです。
自動起動の設定もします。
# /sbin/chkconfig --level 35 saslauthd on

SMTP-AUTH用main.cfの設定

READMEファイル/usr/share/doc/postfix-2.4.3/README-Postfix-SASL-RedHat.txt の内容を参考に、以下を/etc/postfix/main.cfに追加しました。
## SMTP-AUTH

## SASLを使ったSMTP認証を有効にする
smtpd_sasl_auth_enable = yes

## 匿名の認証を許さない
smtpd_sasl_security_options = noanonymous

## 規格外の認証を許す
broken_sasl_auth_clients = yes

## リレー制限
smtpd_recipient_restrictions =
  permit_sasl_authenticated,
  permit_mynetworks,
  reject_unauth_destination
以下は追加説明です。

規格外の認証を許す設定 broken_sasl_auth_clients = yes は、 Outlook Express等のバージョンによって認証の動作が規格外になっているのをサポートするそうです。ただしOutlook Express6.0以降は正常に動作するようです。

リレー制限の設定 smtpd_recipient_restrictions は、以下の通りです。
permit_mynetworks -------- mynetworksで設定したネットワークからは受け付けます
permit_sasl_authenticated --- SMTP認証したクライアントからは受け付けます
reject_unauth_destination --- 自ホスト宛てと設定されている以外のアドレスは拒否します

postfixの再起動

postfixを再起動します。
# /etc/init.d/postfix restart
LAN内のWindowsマシンのメーラー設定をSMTP-AUTH有り&PLAIN認証にして、メールの送信をテストしました。

TLS用main.cfの設定

READMEファイル/usr/share/doc/postfix-2.4.3/README_FILES/TLS_README の内容を参考に、以下を/etc/postfix/main.cfに追加しました。
SSLサーバ証明書と秘密キーの作り方はこちらを参照して下さい。
## TLS
# RSA 鍵と証明書ファイル
smtpd_tls_cert_file = /etc/pki/tls/certs/www.mathomfactory.com.crt
smtpd_tls_key_file = /etc/pki/tls/private/www.mathomfactory.com_nopswd.key

# DSA 鍵と証明書ファイルの時は以下を使います
# smtpd_tls_dcert_file = /etc/postfix/server-dsa.pem
# smtpd_tls_dkey_file = $smtpd_tls_dcert_file

# ログのレベルを1にして、TLS接続と証明書情報を記録するようにします
smtpd_tls_loglevel = 1

# TLSを使う設定 Postfix 2.3以降用
smtpd_tls_security_level = may
# TLSを使う設定 Postfix 2.3以前
# smtpd_use_tls = yes

# 認証の規定値はTLSを使わなくても認証できる、です。
# TLSを必須とする時は、以下を使い yes に変更します。
# smtpd_tls_auth_only = no

# セッション・キャッシングを行う設定です。
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache

# セッション情報の有効期間。
# 指定しないとopenSSLの規定値(1時間)を使います。RFC2246 は最高24時間を推薦しているそうです。
# 以下は10時間の設定です。
smtpd_tls_session_cache_timeout = 36000s

# 乱数生成元の指定です。セッションキー作成に使うようです。
tls_random_source = dev:/dev/urandom
以下は追加説明です。
サーバ鍵はパスフレーズを外しておく必要があるそうです。
SMTPクライアントの設定はしていません。

次に /etc/postfix/master.cf を変更します。 smtps のコメントを外します。
但し、smtpd_client_restrictions はREADMEの説明には無かったのでそのままにしました。
Outlook と Outlook Express 用に非標準のwrapperモードに対応する為だそうです。
#smtps     inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes

postfixの再起動

postfixを再起動します。
# /etc/init.d/postfix restart
LAN内のWindowsマシンのメーラー設定でSMTPSをオンにして(ポート:465)、メールの送信をテストしました。
テストしたメーラーは、Becky!とOutlook Expressです。

紆余曲折Tips

CRAM-MD5認証用の設定

saslパスワード認証を行う場合は以下の設定を/etc/postfix/main.cfに追加します。saslpasswd2コマンドで指定するdomainはこちらに合わせます。
smtpd_sasl_local_domain = $mydomain
saslauthdの設定ファイル/usr/lib/sasl2/smtpd.confを以下のようにCRAM-MD5認証も出きるよう変更します。
# vi /usr/lib/sasl2/smtpd.conf
pwcheck_method: sasldb
mech_list: plain login