Exim4でSMTP認証.deb
[Debian]
AUTH PLAIN、AUTH LOGIN、CRAM-MD5
Etch, Lenny, Squeeze で確認。
デフォルトのExim4はlightなので、heavyに入れ替える。
Squeeze だと、lightをremoveしたら、heavyが自動的に展開された。。。ので、heavyのインストールが必要なかった。
# apt-get --purge remove exim4-daemon-light # apt-get install exim4-daemon-heavy
Exim4の基本設定を行う。
# dpkg-reconfigure exim4-config
- 設定ファイルは小さく分割しない(Squeeze では一番最後に設定する)。
- インターネットサイト:他のサーバーと直接SMTPをしゃべるようにする。
- システムメールネーム:そのままデフォルト。
- IPアドレス・リッスン:空にすればすべてのIPアドレス上で待ちうけ。
- メールを受け取るドメイン名:そのままデフォルト。このドメイン宛のメールは、自分に配送されたと見做す。
- リレーをする送信ドメイン(Squeeze の Exim4だと、「受信ドメインのリスト」と書いてある。Squeeze の説明の方が設定項目の意味を正しく表している):ドメイン名でリレー許可。ここで許可したドメイン名のメールサーバーからのメールリレーを許可する。必要なければ空。
- リレーをする送信マシン(Squeeze の Exim4だと、スマートホストの役割としてメールを無条件にリレー可能なアドレス範囲、とよりわかりやすく書いてある):認証を使う場合は空にする。そうしないと、認証されないユーザーのメールも無条件に配送されてしまう。Lennyまでは「マシン」と書いてあるが、ここはIPアドレス範囲を指定する項目。指定する場合は、CIDR表記を使う。
- あとデフォルト。
/etc/exim4/exim4.conf.templateの設定:下記項目のコメントアウトをはずして有効にする。
plain_server: ... login_server: ... cram_md5_server: ...
デフォルトでは、プレーン・パスワード認証は許可されていない。AUTH PLAIN、AUTH LOGINを使用するためには、これを許可する魔法の変数を設定する。
/etc/exim4/exim4.conf.localmacros
というファイルを作る(dpkg-reconfigure exim4-configで、設定ファイルを分割していない場合。分割した場合には、/etc/exim4/conf.d/main/00_localmacrosというファイルに書く)。
その中に一行、
AUTH_SERVER_ALLOW_NOTLS_PASSWORDS = true
と書く。
設定ファイルの内容をExim4に反映。
設定ファイルを変更した場合に新しい設定を反映させる場合も同じ。
# update-exim4.conf # /etc/init.d/exim4 restart
認証するユーザ・パスワードのファイルを作る。
そのためには、htpasswdコマンドが必要。パスワードファイルを作成する場合は -c、編集する場合は -d。
# apt-get install apache2-utils # htpasswd -c /etc/exim4/passwd <ユーザ名>
そうするとプロンプトでパスワードの入力を促される。
すると、passwdファイルが作成される。
passwdファイルは、
<ユーザ名>:<暗号化されたパスワード>
というように、1行が1ユーザのエントリとなり、ユーザー名と暗号化されたパスワードがコロンで区切られた書式になっている。これで、AUTH PLAIN、AUTH LOGINの認証はできるようになっている。
CRAM-MD5認証用のパスワードを追加するためには、行の3列目としてコロンで区切って暗号化されていない平文パスワードを手で追加する。1行のエントリは最終的に、以下のような書式になる。
<ユーザ名>:<暗号化されたパスワード>:<平文パスワード>
こうしてできたpasswdファイルをExim4が参照する。
これでAUTH PLAIN、AUTH LOGIN、CRAM-MD5が有効になる!
※ dpkg-reconfigure exim4-configで、「リレーをする送信マシン」に設定したIPアドレス範囲からは、認証がなくてもメール送信が可能。「リレーをする送信マシン」からIPアドレス範囲を削除すると、認証を通らなければメールを送信できなくなる。という違いがある。