smtp-auth 対策
2005年9月6日 LinuxPostfix + SMTP-AUTH: WoodyからSargeへ移行時のトラブル (10:32)
apt でwoody/sarge/sidを指定していたため,stableのパッケージがアップデートされないまま放置されっぱなしだった某サーバを Debian 3.1(stable)に移行.無事に移行できたかな?と思っていたら,sasldbでユーザ管理していたPostfixが「fatal: no SASL Authentication Mechanisms」のログを吐いて送受信不可能状態に.
色々調べた結果,Postfix-tlsがlibsasl2関係のパッケージに依存するようになったらしく,libsasl2-modulesが必要になったらしい.まずはこれをapt-get install.
次にデータベースの場所が/etc/sasldbから/etc/sasldb2になったらしいので,sasl2-binをインストールしてsasldbconverter2を実行してみるが動かず.
すこし調べてみるとどうやら/etc/sasldbはBerkeleyDBのデータベースファイルらしく,sasl2ではファイル形式のバージョンが古くてそのままでは変換できないらしい.仕方がないので,apt-get install db4.2-utilして,db4.2-upgradeを実行.アップグレード後のファイルをsasldbconverter2に入力してみたら成功したので,これを/etc/sasldb2に配置した.
Postfix再起動後,mail.logにfatalエラーが出てないかチェックしたが,どうやら大丈夫そうだ.一件落着.
===
こっちのほうがよさそう。これでOK
出先でメールを出したくなるかもしれないっつーことで SMTP AUTH (CRAM-MD5) もしかける。
意外にも Debian Sarge でどうすりゃいいというまとまった文書を見つけられなかったので手間取ってしまった。ワシが行なったのは以下の通り。尚、その前にフツーに postfix が動いている状態にしといてくだされ*4。
まず apt-get で以下のパッケージをインストール。
* postfix-tls
* libsasl2-modules
* sasl2-bin
/etc/postfix/master.cf の「smtp」ではじまる行を以下のような感じで、「-o smtpd_sasl_auth_enable=yes」という記述を追加*5。
smtp inet n - - - - smtpd -o smtpd_sasl_auth_enable=yes
/etc/postfix/main.cf にだいたい以下のような記述を追加。
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
permit_auth_destination,
reject
Outlook Express なんぞにも対応させたければ
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
としておいたほうが良いカモしれない*6。
ほんで、以下のような感じで実行。
# saslpasswd2 -c -u {smtpd_sasl_local_domain と同じ値} {ユーザ名}
で、例によってパスワードを2回打ち込んどく。これが SMTP AUTH の認証アカウントとなる。
/etc/sasldb2 というファイルができるので、postfix が読めるように以下のようにする。
# mv /etc/sasldb2 /var/spool/postfix/etc
# ln -s /var/spool/postfix/etc/sasldb2 /etc
# chgrp postfix /var/spool/postfix/etc/sasldb2
ほんで /etc/init.d/postfix restart して、以下のような感じになれば多分 OK。
$ telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is ’^]’.
220 xxxx.example.net ESMTP Postfix
EHLO localhost ← 入力
250-xxxx.example.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH NTLM DIGEST-MD5 CRAM-MD5 ← 注目
250 8BITMIME
QUIT ← 入力
221 Bye
Connection closed by foreign host.
■ [linux][玄箱]Web メール
出先でネットに繋がったとしても、smtp や imap のポートが通るとは限らない。また、携帯電話しか使えないという場合もありうる。
というわけで Web でメールを読み書きできるようにしようと思ったんだが、こちらは少くとも玄箱では問題山積でうまくいかなんだ。長くなったのでまた明日にでも書き申す (^-^;)。
apt でwoody/sarge/sidを指定していたため,stableのパッケージがアップデートされないまま放置されっぱなしだった某サーバを Debian 3.1(stable)に移行.無事に移行できたかな?と思っていたら,sasldbでユーザ管理していたPostfixが「fatal: no SASL Authentication Mechanisms」のログを吐いて送受信不可能状態に.
色々調べた結果,Postfix-tlsがlibsasl2関係のパッケージに依存するようになったらしく,libsasl2-modulesが必要になったらしい.まずはこれをapt-get install.
次にデータベースの場所が/etc/sasldbから/etc/sasldb2になったらしいので,sasl2-binをインストールしてsasldbconverter2を実行してみるが動かず.
すこし調べてみるとどうやら/etc/sasldbはBerkeleyDBのデータベースファイルらしく,sasl2ではファイル形式のバージョンが古くてそのままでは変換できないらしい.仕方がないので,apt-get install db4.2-utilして,db4.2-upgradeを実行.アップグレード後のファイルをsasldbconverter2に入力してみたら成功したので,これを/etc/sasldb2に配置した.
Postfix再起動後,mail.logにfatalエラーが出てないかチェックしたが,どうやら大丈夫そうだ.一件落着.
===
こっちのほうがよさそう。これでOK
出先でメールを出したくなるかもしれないっつーことで SMTP AUTH (CRAM-MD5) もしかける。
意外にも Debian Sarge でどうすりゃいいというまとまった文書を見つけられなかったので手間取ってしまった。ワシが行なったのは以下の通り。尚、その前にフツーに postfix が動いている状態にしといてくだされ*4。
まず apt-get で以下のパッケージをインストール。
* postfix-tls
* libsasl2-modules
* sasl2-bin
/etc/postfix/master.cf の「smtp」ではじまる行を以下のような感じで、「-o smtpd_sasl_auth_enable=yes」という記述を追加*5。
smtp inet n - - - - smtpd -o smtpd_sasl_auth_enable=yes
/etc/postfix/main.cf にだいたい以下のような記述を追加。
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
permit_auth_destination,
reject
Outlook Express なんぞにも対応させたければ
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
としておいたほうが良いカモしれない*6。
ほんで、以下のような感じで実行。
# saslpasswd2 -c -u {smtpd_sasl_local_domain と同じ値} {ユーザ名}
で、例によってパスワードを2回打ち込んどく。これが SMTP AUTH の認証アカウントとなる。
/etc/sasldb2 というファイルができるので、postfix が読めるように以下のようにする。
# mv /etc/sasldb2 /var/spool/postfix/etc
# ln -s /var/spool/postfix/etc/sasldb2 /etc
# chgrp postfix /var/spool/postfix/etc/sasldb2
ほんで /etc/init.d/postfix restart して、以下のような感じになれば多分 OK。
$ telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is ’^]’.
220 xxxx.example.net ESMTP Postfix
EHLO localhost ← 入力
250-xxxx.example.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH NTLM DIGEST-MD5 CRAM-MD5 ← 注目
250 8BITMIME
QUIT ← 入力
221 Bye
Connection closed by foreign host.
■ [linux][玄箱]Web メール
出先でネットに繋がったとしても、smtp や imap のポートが通るとは限らない。また、携帯電話しか使えないという場合もありうる。
というわけで Web でメールを読み書きできるようにしようと思ったんだが、こちらは少くとも玄箱では問題山積でうまくいかなんだ。長くなったのでまた明日にでも書き申す (^-^;)。
コメント