自宅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
- 新しい記事: PostfixでSMTP-AUTHを実装する方法(PAM編)
- 古い記事: Postfixでのリレー設定方法