SMTP Auth設定メモ

Apr 2004


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

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

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

1 インストール

SMTP Auth にはSASL(Simple Authentication and Security Layer-RFC2222)が必要である。 そしてPostfixでSASLを利用するにはCyrusSASLをインストールしなければならない。

Debian GNU/Linux Woodyでは次のパッケージをインストールする。
沢山あるけどapt-get install パッケージ名 でインストールれば楽!。

libsasl-dev - Development files for authentication abstraction library.
sasl-bin - Programs for manipulating the SASL users database
libsasl-gssapi-mit - Pluggable Authentication Modules for SASL - MIT GSSAPI
libsasl-krb4-mit - Pluggable Authentication Modules for SASL - MIT Kerberos4
libsasl-digestmd5-plain - DIGEST-MD5 module for SASL
libsasl-modules-plain - Basic Pluggable Authentication Modules for SASL
libsasl7 - Authentication abstraction library.
postfix-tls - TLS and SASL support for Postfix

インストールの途中で何かダイアログが出てきてもかまわず、OKで進む。


2 設定


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

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


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

# chgrp postfix /etc/sasldb
# chmod 640 /etc/sasldb

登録したユーザの確認はsasldblistuserコマンド
# sasldblistusers
user: hogehoge realm: karappi.minidns.net mech: DIGEST-MD5
user: hogehoge realm: karappi.minidns.net mech: PLAIN
user: hogehoge realm: karappi.minidns.net mech: CRAM-MD5
ユーザの削除は

# saslpasswd -d ユーザ名

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

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


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

(3)/etc/postfix/master.cfの変更
この記述もよく見かけるけどWoodyバージョンから不要。

(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

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