玄箱X4/サーバー設定/exim4

提供: fukudat
移動: 案内検索

Debian標準のメールサーバー.

目次

Install & Configure

もし exim がインストールされていたら削除し,exim4 をインストールする.

$ sudo apt-get remove exim
$ sudo apt-get install exim4

インストール中に設定が行われる.やり直す場合は

$ sudo dpkg-reconfigure exim4-config

とする.

以下のように入力する.

メール設定の一般的なタイプ
スマートホストでメール送信; SMTP または fetchmail で受信する を選択
システムメール名
メールアドレスのドメイン (例: fukudat.com) を入力
入力側 SMTP 接続をリスンするIPアドレス
127.0.0.1を入力.どこからでも送信できるようにするなら何も入力しない.後者の場合,必ず
  • メールのリレーをしない.
  • 認証設定を行う.
ようにすること.そうでないとSPAMの踏み台となってしまう.
メールを受け取るその他の宛先
メールアドレスのドメインをセミコロンで区切って入力(例: fukudat.com; example.com)
メールをリレーするマシン
通常は空.もしLAN内の他のサーバーのメールをリレーするならそのネットワーク (例: 192.168.0.0/24) を入力する.
送出スマートホストのIPアドレスまたはホスト名
プロバイダのメール中継サーバーのアドレスを入力.(BIGLOBEの場合は msagw.biglobe.ne.jp)
送出するメールでローカルメール名を隠しますか?
yes
表示するローカルユーザのドメイン名
メールドメイン名 (例: fukudat.com)
DNSクエリの数を最小限にとどめますか?
no
ローカルメールの配送方式
/var/mail 内の mbox 形式
設定を小さなファイルに分割しますか?
どちらでもよいが,いいえを選択

以上で,自動的に exim4 の構成ファイルが更新され,daemon processが再起動する.

手動で構成ファイルの更新と再起動するなら,

$ sudo update-exim4.conf
$ sudo /etc/init.d/exim4 restart

とする.

ISP中継サーバーとの接続

せっかくメールサーバーをあげても,ISPのOutbound Port 25 Blocking (OP25B)によりそのままでは外部にメールの送信ができない. ISPはその対策として中継サーバー(relay server)を用意していることが多い.BIGLOBEの場合は,ここから申し込むことによって使用できる.

exim4 の設定としては,/etc/exim4/passwd.client に以下の内容を記述

providers-smtp-relay-server.example.com:login-name:password

ここで

  • login-name は通常,ISP のメールアドレスかアカウントを指定する.
  • password は平文で入力する.

認証設定

以上で設定は完了である.しかしこのままだと,誰でもこのサーバーを使ってメールが送れてしまう.プライベートLANからの接続だけに限定していればそれでもよいが,WANからの接続も許可した場合は,SPAMの温床となってしまう.そこで,パスワードで認証の設定を行う.

まず,以下のコマンドで SSL Certificate を生成する.

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

いくつかの質問に答えると,/etc/exim4/exim.crt と /etc/exim4/exim.key ができる.

次に,/etc/exim4/exim4.conf.template を編集して,以下のセクションのコメントを外す.

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

つまり,これらの行頭の文字 "# " を削除すればよい.

つぎに,/etc/exim4/exim4.conf.localmacros を編集(なければ作成)して,以下の内容を入力する.

MAIN_TLS_ENABLE = true
auth_advertise_hosts = *   # もしLANからの接続は認証なしとするなら, ! 192.168.0.0/24 とする
hostlist host_auth_accept_relay = *
daemon_smtp_ports = smtp : 587

これにより,

  • 通信がTLSで暗号化され
  • すべての(またはLAN以外から接続した)クライアントに対して認証が要求され
  • すべての認証されたクライアントのメールがリレーされ
  • smtp 25番 と 587番 をlistenする

ようになる.

最後に,ログインできるユーザを登録する.

$ sudo /usr/share/doc/exim4/examples/exim-adduser
User: xxxxxx
Password: xxxxxx

すると /etc/exim4/passwd ファイル(がなければ作成され,そこ)にユーザが登録される.

こうやって作られる passwd ファイルのオーナーとパーミッションが間違っているので,以下のように修正する.

$ sudo chown Debian-exim.adm /etc/exim4/passwd
$ sudo chmod 640 /etc/exim4/passwd

以上.

あとは設定ファイルを再生成して,exim4を再起動すれば完了.

$ sudo update-exim4.conf
$ sudo /etc/init.d/exim4 restart

queue の purge

queue にたまって配信できないでいるメールを purge (削除) する方法.

# mailq                        # <-- queue に溜まった msgid を確認
# exim4 -Mrm <msgid>           # <-- msgid を削除

purge したいってことは,たくさんたまった状態なので,メッセージ一つ一つにこのコマンドを実行するのは苦痛だ.まとめて全部削除するなら,

# for msgid in `mailq | grep '<.*>' | cut -c11-27`; do
> echo $msgid
> exim4 -Mrm $msgid
> done

とする.

参考文献

個人用ツール
名前空間

変種
操作
案内
ツールボックス