SMTP Auth設定メモ

Nov 2005

OS:Debian Sarge

Postfix + SMTP Auth のメモ。すでにpostfixが正常に動いていることが前提。

SMTP Auth はSMTP Authentication RFC2554で 制定されている。これはSMTPを利用する際に認証をする方式で不正中継を防止することができる。

関連 apache2設定メモ   postfixメモ  APOP設定メモ  SMTP Auth設定メモ  Courier-imap設定メモ
     apache2のSSL対応   DebianにSquirrelmailの設定 メモ 


1 インストール

SMTP Auth にはSASL(Simple Authentication and Security Layer-RFC2222)が必要である。
既にpostfixが設定できていることとして、Debian GNU/Linux Sargeでは次のパッケージを追加インストールする。


sasl2-bin - Programs for manipulating the SASL users database
libsasl2-modules - Basic Pluggable Authentication Modules for SASL
postfix-tls - TLS and SASL support for Postfix


2 設定

(1) パスワードのデータベース /etc/sasldbファイルの生成

/etc/sasldbはSASLで認証するユーザのデータベース ファイルのこと。
ユーザ名がhogehogeでサーバのドメイン名がkarappi.minidns.netだとすると下の命令を実行してパスワードを2回入力す る。
# saslpasswd2 -c -u karappi.minidns.net hogehoge


Postfixをchroot環境で動かしている場合にpostfixユーザがこのファイルを読めるように、 /etc/sasldbをpostfix groupに入れてパーミッションを変更する。

# chgrp postfix /etc/sasldb2
# chmod 640 /etc/sasldb2

登録したユーザの確認はsasldblistuser2コマンド
# sasldblistusers2
hogehoge@karappi.minidns.net: userPassword
ユーザの削除は

# saslpasswd2 -d ユーザ名

さらにDebianではpostfix用の設定ファイルは/var/spool/postfix/etc/下に置くことになっているので、 /etc/sasldb2をコピーする。(ハードリンクやシンボリックリンクはうまくいかないようだ。)

# cp -p /etc/sasldb2 /var/spool/postfix/etc/


(2) smtpd.confファイルの設定
/etc/postfix/sasl/smtpd.conf または /usr/lib/sasl2/smtpd.confファイルを作成し
pwcheck_method: sasldb
と1行記述する作業はWoody、Sargeでは不要になったようだ。無くても動いた。

(3)/etc/postfix/master.cfの変更
 赤いところを追加する
smtp  inet  n  -  -  -  -  smtpd -o smtpd_sasl_auth_enable=yes


(2)postfixの設定

/etc/postfix/main.cfファイルの赤のところを追加。

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
setgid_group = postdrop
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no
myhostname = karappi.minidns.net
mydomain = karappi.minidns.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost
relayhost =
mynetworks = 127.0.0.0/8, 192.168.0.0/24
#home_mailbox=Maildir/
mailbox_command =
mailbox_size_limit = 0
recipient_delimiter = +
allow_mail_to_commands=alias,forward,include
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions =
permit_mynetworks, <----$mynetworksからのアクセスを許可
permit_sasl_authenticated,<----認証したメールを許可
permit_auth_destination, <----このサーバ宛のメールを許可
reject <---- あとは全部拒否
broken_sasl_auth_clients = yes <----Outlook express用


3 確認
postfixの再起動

# /etc/init.d/postfix restart


動作確認
サーバ内で 赤字のところを入力、紺色のところが出ればSMTP Authで動いている。
$ telnet localhost 25
Trying 127.0.0.1...
Connected to tama.
Escape character is '^]'.
220 karappi.minidns.net ESMTP Postfix (Debian/GNU)
EHLO hogehoge
250-karappi.minidns.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN CRAM-MD5 DIGEST-MD5 GSSAPI
250-AUTH=LOGIN PLAIN CRAM-MD5 DIGEST-MD5 GSSAPI

250-XVERP
250 8BITMIME
QUIT
221 Bye


認証の確認
metamail というのをインストールするとmimencode というパスワードをMIMEエンコード化するコマンドを使えるようになります。(他のディストリビューションではmmencodeかも)
そこでhogehogeユーザの場合
# printf 'hogehoge\0hogehoge\0パスワード' | mimencode
lkslfjsadfsadlij <----------これが MIMEエンコード化されたもの

とするとエンコードした文字列が表示される。
これを上の動作確認のQUITの前で
AUTH PLAIN lkslfjsadfsadlij
と実行してfaildにならなければOKらしいがうまくいったことがない。
でもSylpheedでSMTP-Auth モードで送信できるようになったから大丈夫だろう。


目次 top

ア ンケー トにお答え下さい.
このページについて とても参考になった。
すこし参考 になった。
参考になら なかった。