Home > アーカイブ > 2012-10

2012-10

Postfix + Cyrus SASL で SMTP AUTH を設定した

  • 2012-10-29 (月)
  • unix
この記事の所要時間: 79

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 ユーザを所有者にて解決しました。

参考

http://www.postfix-jp.info/trans–2.3/jhtml/SASL_README.html

  • コメント (Close): 0
  • トラックバック (Close): 0

Home > アーカイブ > 2012-10

検索
フィード
メタ情報

Return to page top