SMTP認証 | 雲の上はいつも青空

雲の上はいつも青空

不思議な経歴をもつエンジニア!?の徒然なブログです。
お仕事関係の話が多いと思いますが、コメントとかもらえると中の人はとても喜びます(^O^)/

Debian GNU4.0/Linux etchにpostfixをインストールします。
その後の細かい設定について、備忘録として書くことにします。

smtp認証を行うには、sasl関連のモジュールが必要です。

# aptitude install sasl2-bin libsasl2-modules

次に以下のファイルを修正
# vi /etc/default/saslauthd
start=no を start=yes へ変更

グループの追加 ビックリマーク
# gpasswd -a postfix sasl
# gpasswd -a postfix shadow
このとき、ls -al /etc でshadowのグループがshadowであることを確認すること!

# /etc/init.d/saslauthd start
ps -aux で、saslauthd が稼動していることを確認。
次に、
# testsaslauthd -u hoge -p PASSWORD  ←hogeは実在しているuserを指定する!
0: OK "Success."
と表示されればちゃんと動いています。

--------
次にpostfix側の設定

main.cfに以下を追加
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

次にsaslの認証方法を追記
# cat /etc/postfix/sasl/smtpd.conf ←最初はファイルが無いので新規作成すること!
pwcheck_method: saslauthd
mech_list: plain login

postfixを再起動して、telnetで動作を確認。
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 rickdom ESMTP Postfix (Debian/GNU)
ehlo test
250-rickdom
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

ただし、本当に動いているかはメーラからチェックするほうが楽かも?チョキ



【補足】グループ追加について

saslモジュールはpostfixの実行時に、postfixより呼び出されます。
つまり、動作するスレッド(子タスク)は親タスクのパーミッションの受け継ぐので、当然postfixというユーザ権限で動作します。

例えば、パスワード認証をpamを使って行う場合には、当然パスワードのハッシュ値が書かれたshadowファイルを読む必要がありますので、shadowファイルを読むパーミッションがあるかどうか? が重要なポイントです。

shadowファイルは重要なファイルなのでオーナーはrootです。
しかし、postfixの認証関連を呼び出す親タスクはpostfixというオーナーで動いているため、このままではshadowファイルを参照できません。
そのため、shadowファイルをshadowというグループに属させ、グループでの読み取りを可にし、そのshadowというグループにpostfixを所属させることで、認証関連モジュールのタスクがshadowファイルへアクセスすることが可能となります。

ファイル名とグループ名、オーナー名を混同しないことが大切です(設定ではすべて同じにすることも可能なので)。

同様にsaslが独自に作るパスワードDBに対して認証モジュールがアクセスする場合もあります(例えばCRAM-MD5、DIGEST-MD5などのチャレンジレスポンス方式を使う場合には、saslのDBに対してアクセスが必要になります)。
…ということで、saslのDBのグループにpostfixを追加する必要があります。

なんか文章で説明するの難しいです( TДT)