exim4の設定方法

DebianのデフォルトMTAは、exim4です。このexim4に関する設定情報は、あまりないのですが、何とか設定できたので、その設定情報を記録しておきす。

次のようなexim4の動作を目指して設定しました。

  • プロバイダーのSMTPを利用しメールをリレー送信する。
  • メール送信時にSMTP認証を行う。
  • TLSを使用し経路の暗号化を行う。

このような方針で設定を行いました。

スポンサーリンク

基本設定

以下のコマンドを実行し、exim4の設定を行います。

 dpkg-reconfigure exim4-config 

Debian Configurationの画面が起動されるので質問に答えていきます。

設定を小さなファイルに分割しますか?

設定ファイルを1つのファイルにするのか40のファイルに分割するのかを決めます。おそらく、分割しないほうがよいので<いいえ>を選択します。

メール設定の一般的なタイプ

通常のメールサーバーの場合は、「インターネットサイト; メールは SMTP を使って直接送受信される」を選ぶでしょう。

今回は、利用しているプロバイダーが、Outbound Port 25ブロッキングを実施、DDNSを使用したメールサ-バ禁止のため、「スマートホストでメール送信; SMTP または fetchmail で受信する」を選択し、プロバイダーのSMTPサーバーを経由してメールを送ります。

システムメール名

ここに入力したドメイン名で/etc/mailnameが作られます。

このファイルは、ほかのプログラムでも使用され、ユーザー名@/etc/mailnameのドメイン名でメールアドレス自動生成するようです。

入力側SMTP接続をリスンするIPアドレス

メールを送ることができる端末のIPアドレスを設定します。

制限しないので空のままにします。

メールを受け取るその他の宛先

このSMTPサーバーで扱うドメインを指定します。

サーバー自体のドメイン名(ホスト名)とメールで使用するシステムメール名が違う場合は、システムメール名と同じ内容を設定します。

メールをリレーするマシン

リレーを許可するホストやネットワークを指定します。認証なしでリレーを許可しないので空にしておきます。

このホストから送出されたメールを操作するマシン (スマートホスト)

プロバイダーのメールサーバを指定します。

送出するメールでローカルメール名を隠しますか?

<いいえ>を選択します。

DNS クエリの数を最小限に留めますか (ダイヤルオンデマンド)?

<いいえ>を選択します。

以上が設定内容です。

Outbound Port25 Blocking(OP25)対策

プロバイダのSMTPサーバは、OP25対策されており、アクセスするには、SMTP認証の必要があります。認証に必要な情報は、「/etc/exim4/passwd.client」ファイルに設定します。追加内容する内容は、次のようになります。

 targetmailserver.example:login:password 
(プロバイダーのSMTP:loginユーザID:パスワードのフォーマットで追加) 

最後に所有者とパーミッションの設定をします。

chown root:Debian-exim /etc/exim4/passwd.client chmod 640 /etc/exim4/passwd.client

あとは、再起起動します。

 /etc/init.d/exim4 restart 

SMTP認証の設定について

有効にするユーザ認証方式は、「AUTH PLAIN」「AUTH LOGIN」とします。設定ファイルは、「/etc/exim4exim4.conf.template」です。このファイルの以下の行のコメントをはずし有効化します。

plain_server:
 driver = plaintext
 public_name = PLAIN
 server_condition = "${if crypteq{$3}{${extract{1}{:}{${lookup{$2}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
 server_set_id = $2
 server_prompts = :
 .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
 server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
 .endif

login_server:
 driver = plaintext
 public_name = LOGIN
 server_prompts = "Username:: : Password::"
 server_condition = "${if crypteq{$2}{${extract{1}{:}{${lookup{$1}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
 server_set_id = $1
 .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
 server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}

この設定のなかで、「server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}」の設定についてですが、STARTTLSされてない場合にAUTHのadvertiseを無効化するための設定です。telnetで接続後、「EHLO local」の後に、「AUTH」が表示されなくなります。

パスワード確認用ファイルの作成

「/etc/shadow」から、メールでSMTP認証するユーザの行を抜き出し、「/etc/exim4/passwd」に書き込みます。以上で、ユーザ認証についての設定は終了です。

TLSを有効にする設定について

証明書の作成から次のコマンドを実行し証明書を作成します。

 /usr/share/doc/exim4-base/examples/exim-gencert 

次に、設定ファイルを変更します。設定ファイルは、「/etc/exim4/exim4.conf.template」です。このファイルの以下の行のコメントをはずし有効化します。

log_selector = +tls_cipher +tls_peerdn
tls_advertise_hosts = *
tls_certificate = CONFDIR/exim.crt
tls_privatekey = CONFDIR/exim.key

最後に変数「MAIN_TLS_ENABLE」に値を設定し、TLSを有効にします。

MAIN_TLS_ENABLE = USE

メーラから接続したときに時間待ちが長くかかるので、以下の行のコメントをはずし有効化します。

rfc1413_query_timeout = 0s

認証したユーザにリレーを許可する設定について

今の状態では、リレーを一切受け付けない設定になっています。認証したユーザのみリレーできるようにします。「/etc/exim4exim4.conf.template」のauth/30_exim4-config_examplesの部分の終り辺りを以下のように変更します。

accept
 hosts = +relay_from_hosts ${if and{{def:tls_cipher}{def:authenticated_id}} { : * }{}}
 verify = sender

次のコマンドを実行し設定を有効化したあと、exim4を再起動します。

update-exim4.conf
/etc/init.d/exim4 restart
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク