Archive for 2009/7/16
Postfix とdovecotを使ってSMTP AUTHを使えるようにする必要性が出てきた。
というのも、gmailではSMTP AUTHが必須になっているので、このテストのためにもこの設定が必要だ。
このSMTP AUTHの問題さえ解決できれば私が作っているAdobe AIR版SMTPライブラリでメールがGmailを使って送れるようになる。
すでに、POP3版もできているので、これがそろえば送受信が行える。
幸いにも認証方法はLOGIN PLAINになっているので、dovecotで十分だ。
ちなみに、Postfixとdovecotのインストールがされていることが前提なので注意。
さて、PostfixでSMTP AUTHを使えるようにするにはというのをさがしてみるとPostfixの再インストールがされているものばかり。
しかし、最近インストールしたものなので、再インストールは必要ないだろうということで、それを確認する。
#postconf -a cyrus dovecot
SMTPの認証にcyrusというのとdovecotが使えると出力されているので、問題なくdovecotが使えるのが確認できた。
このあたりの確認方法は
man postconf
と打てば使いかたは出てくる。
-a List the available SASL server plug-in types. The SASL plug-in type is selected with the smtpd_sasl_type configuration parameter by specifying one of the names listed below. cyrus This server plug-in is available when Postfix is built with Cyrus SASL sup- port. dovecot This server plug-in requires the Dovecot authentication server. This feature is available with Postfix 2.3 and later.
と出てきたので、Version が2.3より新しければだいたい大丈夫なのかもしれない。
また、postconfはこれから設定ファイルを変更するのだが、その設定がきちんと設定されているかなどを確認するのにも使う。
(私自身、スペルを間違ってしまってはまってしまったなんて時に、これを使って再確認する。)
さて、Postfixとdovecotの設定を行う。
詳しい設定は、http://www.postfix.org/SASL_README.html#build_dovecotにあるので、こちらを見てほしい。
しかし、ここではプログラム確認のためのサーバなのでセキュリティやら何やらの設定はいらない。
できるだけ、何の制約もなく使えるようにしたいので、必要最低限の設定を行う。
なので、実際の運用に使うものの設定ではないので、ご注意頂きたい。
/etc/postfix/main.cf 以下を追加
smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes broken_sasl_auth_clients = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
/<どこかのパス>/dovecot.conf
以下のような記述が既にあるので、下記を参考に変更、もしくは頭の#を取って設定を有効にする。
auth default {
mechanisms = plain login
:
途中省略
:
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
これで、postfixとdovecotを再起動すれば問題ない。
ちなみに、テストで
$telnet localhsot 25 <-- (入力) 220 localhost ESMTP Postfix EHLO localhost <-- (入力) 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN 250-AUTH=PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN AUTH LOGIN <-- (入力) 334 VXNlcm5hbWU6 xxxxxxxxxx <-- (入力)ここにLogin Userをbase64した形で入力 334 UGFzc3dvcmQ6 yyyyyyyyyy <-- (入力)ここにPasswordをbase64した形で入力 235 2.0.0 Authentication successful QUIT <-- (入力) 221 2.0.0 Bye
ちなみに、
334 VXNlcm5hbWU6
などのように出力されるが、
これは、
334 Username:
と出力されている。VX..の部分がBASE64でエンコードされているだけだ。
また、UGFzc3dvcmQ6は「Password:」と出力されている。
このあたりが、BASE64でどうせセキュリティがほとんどないのに、このようになっている意味はよくわからない。


