PostfixでSMTP-AUTHを実装する方法(SASL2編)

自宅LinuxサーバにPostfixの設定を行っているのですが、不正中継の踏み台にならないようにメール送信時にSMTP認証をかけることにしました。Debian/Lennyで用意されているパッケージには、認証方法に「SASL2」を使用する方法とPAM認証を利用する「saslauthd」認証デーモンを使う方法があります。今回は、「SASL2」を使用する場合についてです。

スポンサーリンク




必要なパッケージのインストール

Debian/Lennyでは、普通にpostfixをインストールすれば、「SASL2」に対応しているようです。なので、「SASL2」本体のパッケージ「sasl2-bin」「libsasl2-modules」をインストールします。

SASL2の設定方法

パスワードの設定をします。設定するドメインを「example.com」、ユーザを「smtpuser」とすると、設定するコマンドは、次のようになります。

root@debian:~# saslpasswd2 -u example.com -c smtpuser
Password:
Again (for verification):

コマンド実行後にパスワードを2度、入力すれば、終了です。ここで、重要なのは、ドメイン名「example.com」の設定値です。この値は、Postfixの設定ファイル内のパラメータ「smtpd_sasl_local_domain」に設定されている値と同じである必要があります。詳細は、後ほど。

設定した内容の確認には、次のコマンドを実行します。

root@debian:~# sasldblistusers2
smtpuser@example.com: userPassword

パスワードを変更するには、次のコマンドを使います。登録時と同じようにパスワードを2回入力すれば変更完了です。

root@debian:~# saslpasswd2 -u example.com smtpuser
Password:
Again (for verification):

登録を削除するには、次のコマンドを使います。

root@debian:~# saslpasswd2 -u example.com -d smtpuser

これらの情報は、「/etc/sasldb2」というファイルに保存されています。このファイルをPostfix起動ユーザが見れるように設定します。

root@debian:~# chgrp postfix /etc/sasldb2
root@debian:~# chmod 640 /etc/sasldb2

さらに、Postfixがchroot環境で実行されている場合には、ハードリンクする必要もあります。Postfixがchroot環境で動いているかどうかは、s設定ファイル「/etc/postfix/master.cf」を見ればわかります。

root@debian:~# ln /etc/sasldb2 /var/spool/postfix/etc

Postfixの設定

Postfixの設定ファイルは、「/etc/postfix/main.cf」です。このファイルにSMTP-AUTH用の設定を追加します。追加する内容は、次のとおり。

smtpd_sasl_auth_enable=yes
smtpd_sasl_local_domain=example.com
smtpd_recipient_restrictions=
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination
smtpd_sasl_security_options=noanonymous,noplaintext
smtpd_sasl_auth_enable
SMTP認証を使用する場合は、「yes」を使用しない場合は、「no」を設定する。
smtpd_sasl_local_domain
ドメイン名を指定する。ただし、SALS2での情報ファイルを作成するときに指定するドメイン名と一致させないと認証エラーとなる。
smtpd_recipient_restrictions
SMTPでのRCPT TOコマンドで指定された宛先メールアドレスに応じてメール受信の許可/拒否する事が出来ます。設定できる設定値は、以下のようになります。

permit_mynetworks
自サイトのネットワークからの接続を無条件で許可します。
permit_sasl_authenticated
SMTP認証された接続を無条件で許可
reject_unauth_destination
「mydestination」「inet_interfaces」「virtual_alias_domains」「virtual_mailbox_domains」「relay_domains」これらのパラメータに設定されているアドレス宛ての場合は許可しそれ以外は拒否
smtpd_sasl_security_options
使用可能な、認証方式を設定。設定値は、「noanonymous」(匿名での接続を拒否。)「noplaintext」(PLAINテキストでの認証を拒否。)などがあります。LOGIN認証や、PLAIN認証も含める場合には、「noanonymous」だけを設定し、DIGEST-MD5認証や、CRAM-MD5認証のみの場合には、「noplaintext」も設定します。

ファイル設定後、Postfixを再起動します。

設定の確認

telnetコマンドで、SMTP-AUTHが機能していることを確かめます。まずは、「telnet localhost 25」を実行します。

root@debian:~# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mail.local-debian.jp ESMTP Postfix (Debian/GNU)

次に「EHLO local」を入力します。認証にLOGINやPLAINを許す場合は、以下のように表示されます。「250-AUTH・・・」の行が出力されていれば成功です。

EHLO local
250-example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH CRAM-MD5 LOGIN NTLM PLAIN DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

PLAINテキストでの認証を拒否している場合は、次のようになります。

EHLO local
250-mail.local-debian.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH CRAM-MD5 NTLM DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする