玄箱X4/サーバー設定/exim4
出典: Fukudat.com
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
とする.
