Home > アーカイブ > 2012-10
2012-10
Postfix + Cyrus SASL で SMTP AUTH を設定した
- 2012-10-29 (月)
- unix
CentOS5.8 で Postfix + Cyrus SASL で SMTP AUTH を設定したのでメモです。
0. 環境確認
Postfix はあらかじめインストールされていました。
$ sudo rpm -qa | grep postfix
postfix-2.3.3-2.3.el5_6
Postfix でサポートしている認証方法を確認します。。今回は cyrus を使うので ok。POPとアカウントを共有するなら dovecot を使います。
$ /usr/sbin/postconf -a
cyrus
dovecot
Cyrus SASL パッケージは以下がインストールされています。
$ sudo rpm -qa | grep cyrus-sasl
cyrus-sasl-lib-2.1.22-7.el5_8.1
cyrus-sasl-2.1.22-7.el5_8.1
1. Cyrus SASL インストール
Cyrus SASL パッケージはインストールされていましたが、個別の認証処理を担うパッケージがインストールされていなかったのでインストールしておきます。
$ sudo sudo yum -y install cyrus-sasl-md5
PLAIN 認証を使うなら以下もインストールします。
$ sudo sudo yum -y install cyrus-sasl-plain
2. Cyrus SASL パスワード設定
今回は Unix ユーザではなく、Cyrus SASLパスワードファイルで認証するので、saslpasswd2 で、アカウントを追加します。
-c でアカウント追加、-u でドメイン(example.com)、そしてユーザID(user)を指定します。SMTPクライアントからは、ここで入力したユーザIDとパスワードで認証します。
なお -u で指定したドメインは realm として Postfix の設定と揃える必要があります。/etc/postfix/main.cf で $mydomain に指定しているもので良いでしょう。
$ sudo /usr/sbin/saslpasswd2 -c -u example.com user
[パスワードを入力]
パスワードファイルを postfix ユーザが参照できるようにしておきます。
$ sudo chown postfix /etc/sasldb2
3. Cyrus SASL 設定
Cyrus SASL での認証方法を /usr/lib/sasl2/smtpd.conf に設定しておきます。
今回は saslauthd ではなく、Cyrus SASL パスワードファイルを利用するので、pwcheck_method を auxprop に変更します。
$ sudo vim /usr/lib/sasl2/smtpd.conf
#pwcheck_method: saslauthd
pwcheck_method: auxprop
4. Postfix 設定
最後に Postfix で SASL 認証を有効にします。設定は /etc/postfix/main.cf に追加します。
$ sudo vim /etc/postfix/main.cf
# SMTP AUTH
smtpd_sasl_auth_enable=yes
smtpd_sasl_local_domain=$mydomain
smtpd_recipient_restrictions=
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
smtpd_sasl_security_options=noanonymous,noplaintext
各パラメータの意味は以下になります。
-
smtpd_sasl_auth_enable=yes
SMTP サーバ で SASL 認証を有効にします。
-
smtpd_sasl_local_domain=$mydomain
SASL 認証 realm を指定します。saslpasswd2 の -u で指定したものと同じ値にします。この値が一致しないと認証できません。
-
smtpd_recipient_restrictions
SMTP サーバが RCPT TO コマンドで適用するアクセス制限。指定した制限が有効になります。
デフォルトでは permit_mynetworks と reject_unauth_destination が有効になっているので、SASL 認証に成功した要求を許可するために permit_sasl_authenticated を追加しています。 -
smtpd_sasl_security_options=noanonymous,noplaintext
SASLセキュリティオプションを設定します。noanonymous では匿名認証を許可しません。noplaintext では平文パスワードによる認証(PLAIN認証)を許可しません。
(Outlook Express では平文パスワードのみサポートしてますので、クライアントとして利用する場合は noplaintext を削除する必要があります。平文パスワードを利用する場合は TLS 対応を設定して通信経路を暗号化した方が良いでしょう。)
5. Postfix を再起動
設定を有効にするために Postfix を再起動します。
$ sudo /etc/init.d/postfix restart
6. 動作を確認する
telnet で 25 port にアクセスして、SMTP AUTH が有効になっているか確認します。
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 example.com ESMTP Postfix
EHLO a を入力します。
EHLO a
250-example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-ENHANCEDSTATUSCODES
250 DSN
AUTH 行にて認証方式が表示されます。これで SMTP AUTH が有効になっていることが確認できました。
あとは SMTP クライアントでSMTP AUTH関連の設定をして送信ができるかテストします。
7. エラーメッセージ
設定して動作確認していた際に上手く動作せずに /var/log/mail.log に記録されたエラーです。参考まで。
Cyrus SASL パッケージ不足
warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
fatal: no SASL authentication mechanisms
cyrus-sasl-md5 や cyrus-sasl-plain がインストールされていなかったために発生しました。yum でインストールして解決です。
SASL パスワードファイルの権限不足
warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied
SASL パスワードファイル( /etc/sasldb2 )に postfix ユーザの読み込み権限が無かったために発生しました。chown で postfix ユーザを所有者にて解決しました。
参考
- コメント (Close): 0
- トラックバック (Close): 0
Home > アーカイブ > 2012-10
- 検索
- フィード
- メタ情報