メールサーバ設定 Setup Mail server (Debian3.2 + Exim4.8 + Dovecote2.1.7)

writen in utf-8 S.Kato ONICOS and Graph.K '12/02/24
Last Updated: sice 2014/02/22

Debian 7.1 : Linux mandd 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux
SMTP Server: Exim version 4.80 #3 built 02-Jan-2013 18:59:25
POP, IMAP Server: Dovecot 2.1.7: /etc/dovecot/dovecot.conf

以下、Debian 7.1 (debian 3.2.4601) 標準の exim4 の設定のメモです。 ところどころdevianとタイポしてるかもしれません。ご容赦下さい。

構成と確認

ここで設定するメールサーバは、SMTP(25)で直接インターネットにメールを配信します。メールの受信はDNSのMXフィールドに設定してあることが前提です。MXフィールドに設定されているサーバが直接受けとります。
Client(Windows、Mac)はPOP3(110), IMAP4(143)で受信します。(カッコ内はデフォルトのポートアドレスです)

+---------+      +-----------------------------+         +---------+
| Internet|      |   mail server               |         |  Client |
| +----+  |      |+-----+                      |         | +-----+ |
| | MX | <-smtp- ||Exim4| <-----------------------smtp---- | MUA | |
| +----+  |      |+-----+                      |         | +-----+ |
|         |      |                             |         |         |
| +----+  |      |+-----+            +-------+ |         | +-----+ |
| |SMTP| -smtp-> ||Exim4| -Maildir-> |Dovecot| -pop/imap-> | MUA | |
| +----+  |      |+-----+            +-------+ |         | +-----+ |
+---------+      +-----------------------------+         +---------+

DNSの設定の確認はdigやnslookupコマンドを利用してください。

Linux

[root@www2 html]# dig graphk.co.jp mx

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> graphk.co.jp mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45689
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:
;graphk.co.jp.                  IN      MX

;; ANSWER SECTION:
graphk.co.jp.           3600    IN      MX      10 smtp.graphk.co.jp.

;; AUTHORITY SECTION:
graphk.co.jp.           3600    IN      NS      dns.graphk.co.jp.

;; ADDITIONAL SECTION:
smtp.graphk.co.jp.      3600    IN      A       192.168.xxx.xxx
dns.graphk.co.jp.       3600    IN      A       192.168.xxx.xxx

;; Query time: 1 msec
;; SERVER: 192.168.xxx.xxx#53(192.168.xxx.xxx)
;; WHEN: Sun Feb 23 12:05:57 2014
;; MSG SIZE  rcvd: 101


[root@www2 html]# nslookup -type=MX graphk.co.jp
Server:         192.168.xxx.xxx
Address:        192.168.xxx.xxx#53

graphk.co.jp    mail exchanger = 10 smtp.graphk.co.jp.

[root@www2 html]#

Windows

C:\Users\web_user>nslookup -type=MX graphk.co.jp
サーバー:  google-public-dns-b.google.com
Address:  8.8.4.4

権限のない回答:
graphk.co.jp    MX preference = 10, mail exchanger = smtp.graphk.co.jp

C:\Users\web_user>

Exim4

主にはメールをインターネットに転送するための設定です。ローカルネットワーク(192.168.xxx.0/24)からのメールは無条件に転送し、スマートホストとして動作します。 この構成に関して、英語圏含めあまり解説が無いようです。
Graph.Kの環境ではファンレスのマシンをdnsとmailサーバにするため、都合でdebianにしました。 postfixの設定はCentのマシンでやる予定です。
特定のネットワークからsmtpで送信するだけならこれで利用できます。 この設定で構築したサーバをスマートホストにする場合、アカウントを追加する必要があります。
postfixならたくさんの設定例が見つかるので、もっと簡単かもしれませんが、バージョンが書いてなかったりして玉石混合です。
sendmailだった僕にはいまいちなに言ってるか実験してみないとわかりません。 この設定も2回コンフィグしてみました。

Exim4 コンフィグ exim4-config

デビアンなので設定は以下のコマンドを実行して、それぞれの設定を実施してください。

#dpkg-reconfigure exim4-config
  1. メール設定の一般的なタイプ
    インターネットサイト; メールは SMTP を使って直接送受信される <--
    スマートホストでメール送信; SMTP または fetchmail で受信する
    スマートホストでメール送信; ローカルメールなし
    ローカル配信のみ; ネットワークなし
    今は設定しない
  2. システムメール名:
    graphk.co.jp
  3. 入力側 SMTP 接続をリスンする IP アドレス:
    ____(未設定)
  4. メールを受け取るその他の宛先:
    graphk.co.jp
  5. メールをリレーするドメイン:
    ____(未設定)
  6. メールをリレーするマシン:
    192.168.xxx.0/24 <-- ローカルを転送、後でそれぞれipで追加するかSMTP autherで対応できるか要テスト
  7. DNS クエリの数を最小限に留めますか (ダイヤルオンデマンド)?
    <いいえ>
  8. ローカルメールの配送方式:
    /var/mail/ 内の mbo形式
    ホームディレクトリ内の Maildir 形式 <-- Dovect用
  9. 設定を小さなファイルに分割しますか?
    <いいえ>

以上で設定が終了します。終了するとコンフィグファイルをはきだし、デーモンを再起動します。

[ ok ] Stopping MTA for restart: exim4_listener.
[ ok ] Restarting MTA: exim4.

テスト

1.送信テスト
katosa@mandd:/etc/exim4$ mailx -v -s "test2" katosa@onicos.co.jp
test
.
Cc:
2.受信テスト
# exim_checkaccess  
3.ツール類
katosa@mandd:/usr/share/doc/exim4-base/examples$ ls
aliases          exim-adduser  ratelimit.pl
cramtest.pl      exim-gencert  transport-filter.pl
example.conf.gz  logargs.sh    unknownuser.sh

root@mandd:/etc/exim4/conf.d# ls /usr/sbin/exim*
/usr/sbin/exim              /usr/sbin/exim_dbmbuild  /usr/sbin/exim_tidydb
/usr/sbin/exim4             /usr/sbin/exim_dumpdb    /usr/sbin/eximstats
/usr/sbin/exim_checkaccess  /usr/sbin/exim_fixdb
/usr/sbin/exim_convert4r4   /usr/sbin/exim_lock
root@mandd:/etc/exim4/conf.d#

送信テストの実行例

katosa@mandd:/etc/exim4$ mailx -v -s "test2" katosa@onicos.co.jp
test
.
Cc:
LOG: MAIN
  <= katosa@graphk.co.jp U=katosa P=local S=333
katosa@mandd:/etc/exim4$ delivering 1WF1KF-0001cG-UK
R: dnslookup for katosa@onicos.co.jp
T: remote_smtp for katosa@onicos.co.jp
Connecting to onicos.sakura.ne.jp [59.106.19.160]:25 ... connected
  SMTP<< 220 www710.sakura.ne.jp ESMTP Sendmail 8.14.5/8.14.5; Sun, 16 Feb 
2014 22:00:10 +0900 (JST)
  SMTP>> EHLO mandd
  SMTP<< 250-www710.sakura.ne.jp Hello 221x114x224x27.ap221.ftth.ucom.ne.jp 
[221.114.224.27], pleased to meet you
         250-ENHANCEDSTATUSCODES
         250-PIPELINING
         250-8BITMIME
         250-SIZE 209715200
         250-DSN
         250-ETRN
         250-AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN
         250-STARTTLS
         250-DELIVERBY
         250 HELP
  SMTP>> STARTTLS
  SMTP<< 220 2.0.0 Ready to start TLS
  SMTP>> EHLO mandd
  SMTP<< 250-www710.sakura.ne.jp Hello 221x114x224x27.ap221.ftth.ucom.ne.jp 
[221.114.224.27], pleased to meet you
         250-ENHANCEDSTATUSCODES
         250-PIPELINING
         250-8BITMIME
         250-SIZE 209715200
         250-DSN
         250-ETRN
         250-AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN
         250-DELIVERBY
         250 HELP
  SMTP>> MAIL FROM: SIZE=1367
  SMTP>> RCPT TO:
  SMTP>> DATA
  SMTP<< 250 2.1.0 ... Sender ok
  SMTP<< 250 2.1.5 ... Recipient ok
  SMTP<< 354 Enter mail, end with "." on a line by itself
  SMTP>> writing message and terminating "."
  SMTP<< 250 2.0.0 s1GD0Ag6096202 Message accepted for delivery
  SMTP>> QUIT
LOG: MAIN
  => katosa@onicos.co.jp R=dnslookup T=remote_smtp H=onicos.sakura.ne.jp 
[59.106.19.160] X=TLS1.0:DHE_RSA_CAMELLIA_256_CBC_SHA1:256 DN="OU=Domain 
Control Validated,CN=*.sakura.ne.jp"
LOG: MAIN
  Completed

Auther

SMTP Ajtherに関しては設定してありますが、まだテストしてません。パスワードの部分が/etc/shadowからコピーしろとあるのですが、/etc/exim4/passwdはexim-adduserで追加されます。実験してからにします。

設定ファイル:/etc/exim4/exim4.conf.template
以下を有効にするらしい。(Linuxで自宅サーバ構築)コンフィグファイルを調べてからにします。 設定悪いとローカルからも送れなくなるので先にメモまとめます。('14/02/23)

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}{}{}{*}}

設定ファイル

設定ファイルは/etc/exim4/の下にあります。

root@mandd:/etc/exim4# ls
conf.d    exim4.conf.template          passwd.client
exim.crt  exim4.conf.template.s140222  sa-exim.conf
exim.key  passwd                       update-exim4.conf.conf
root@mandd:/etc/exim4#

Dovecot 2.1.7 POP3 , IMAP4

注意:あちらこちらでデフォルトでOKみたいなブログが多く見受けられますが、 2.1.7 では動きません。
ログみたら動作していたので、ディレクトリなど以下を確認して設定したら動作しました。

1.設定の内容

プレーンテキスト認証
Maildirを利用

2.デフォルトからの変更

プレーンテキスト認証

/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no

Maildirを利用

/etc/dovecot/conf.d/10-mail.conf
#mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_location = maildir:~/Maildir

3.コンフィグの確認

root@mandd:/etc/dovecot/conf.d# doveconf -n
# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.1
disable_plaintext_auth = no
mail_location = mbox:~/mail:INBOX=/var/mail/%u
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix =
}
passdb {
  driver = pam
}
protocols = " imap pop3"
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
userdb {
  driver = passwd
}

dpkg-reconfigure exim4-config のメッセージのコピー

1.メール設定の一般的なタイプ:
必要とするものに最適と思われるメールサーバ設定形式を選択してください。

ダイヤルアップシステムなどの動的 IP アドレスのシステムでは、一般に送出するメールを配信のために別のマシン (「スマートホスト」と呼ばれる) に送るよう設定すべきでしょ 
う。
インターネット上の受信システムの多くは、迷惑メール対策として動的 IP アドレスからやってくるメールをブロックしているからです。
動的 IP アドレスのシステムは、自身のメールを受け取るようにするか、ローカル配送を (root と postmaster へのメールを除き) すべて無効にするかできます。

インターネットサイト; メールは SMTP を使って直接送受信される <--
  スマートホストでメール送信; SMTP または fetchmail で受信する
  スマートホストでメール送信; ローカルメールなし
  ローカル配信のみ; ネットワークなし
  今は設定しない

2.システムメール名:
「メール名」は、ドメイン名がないときにメールアドレスを「修飾」するために使われるドメイン名です。
この名前はほかのプログラムによっても使われます。これは、単一の完全修飾ドメイン名 (FQDN) にすべきです。
たとえば、ローカルホストのメールアドレスが foo@example.org の場合、ここで入力する正しい値は example.org となるでしょう。
書き換えを有効にすると、この名前は送出するメッセージの From: 行に出現しません 


graphk.co.jp

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

IP アドレスのリストをセミコロンで区切って指定してください。
Exim SMTP リスナデーモンは、ここで挙げられたすべての IP アドレスをリスンします。 

この値を空にすると、Exim はすべての利用可能なネットワークインターフェイスの接続をリスンするようになります。
このシステムが (ほかのホストからではなく) ローカルサービスから直接メールを受け取るのであれば、ローカルの Exim デーモンへの外部からの接続を禁止するのもよいでしょう。こ 
のようなサービスには、fetchmail 同様にローカルホストとやり取りする電子メールプログラム (MUA) も含まれます。ここで 127.0.0.1 と入力すると、パブリックなネット 
ワークインターフェイスのリスニングを無効にするので、外部から接続できなくなります。

4.メールを受け取るその他の宛先:
このマシン自身が最終的な宛先と見なされるべきドメインのリストをセミコロンで区切って指定してください。これらのドメインは一般に「ローカルドメイン」と呼ばれます。ローカルホスト名 () および 'localhost' は 
常にこのリストに追加されます。

デフォルトでは、すべてのドメインは同一のものとして扱われます。a.exampleと 
b.example の両方がローカルドメインである場合、acc@a.example とacc@b.example 
は同じ最終宛先に配送されます。異なるドメイン名を別々のものとして扱いたいときには、設定ファイルをあとで編集する必要があります。

graphk.co.jp_

5.メールをリレーするドメイン:
たとえばフォールバック MX またはメールゲートウェイとしてこのシステムがメールをリレーする、受信ドメインのリストをセミコロンで区切って指定してください。つまり、このシステムがこれらのドメインからのメールをインターネット上のどこからも受け付け、ローカル配送ルールに従って配送することを意味します。
ここではローカルドメインについては記述しないでください。ワイルドカードも利用できます。


6.メールをリレーするマシン:
このシステムがスマートホストの役割としてメールを無条件にリレー可能な IPアドレス範囲のリストを、セミコロンで区切って指定してください。
標準的なアドレス/長さのフォーマットを利用すべきです (たとえば 
194.222.242.0/24 や 5f03:1200:836f::/48)。

このシステムをほかのホスト向けのスマートホストにしようとするわけではないなら、このリストを空のままにしておいてください。

192.168.xxx.0/24 <-- ローカルを転送、後でそれぞれipで追加するかSMTP autherで対応できるかテスト

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

<いいえ>

8.ローカルメールの配送方式:
Exim はローカルに配送された電子メールを異なる形式で格納できます。ほとんどの場合は、mboと Maildir のどちらかが使われます。mboはすべてのメールフォルダを 
/var/mail に単一ファイルで格納します。Maildir 形式では、各個のメッセージは 
~/Maildir/ に分割されたファイルとして格納されます。

ほとんどのメールツールは、ローカル配送方式が mboであるとデフォルトでは仮定していることに注意してください。

/var/mail/ 内の mbo形式 <--
ホームディレクトリ内の Maildir 形式 <-- dovect用

9.設定を小さなファイルに分割しますか?
Debian の exim4 パッケージは、1 つのモノリシックなファイルである「単一設定」(/etc/exim4/exim4.conf.template) 
か /etc/exim4/conf.d/ に置かれる約 50 の小さなファイルから実際のファイルが構成される「分割設定」のどちらでも利用できます。
単一設定は大きな変更をするのに向いており、一般的により安定しているのに対し、分割設定は小さな変更を行うのに楽な方法を提供します (ただし脆く、配慮せずに変更すると壊れるかもしれま 
せん)。
分割設定と単一設定の詳細な議論については、/usr/share/doc/exim4-base にある 
Debian 固有の README ファイルで参照できます。

<いいえ>

10.デーモンの再起動
以上で設定は終了してコンフィグファイルをはきだして、自動でデーモンを再起動します。

root@mandd:/usr/share/doc/exim4-base/examples# dpkg-reconfigure exim4-config
[ ok ] Stopping MTA for restart: exim4_listener.
[ ok ] Restarting MTA: exim4.

参考になるURL

バージョンが古すぎるのでほんとに参考ぐらいです。コマンドの利用方法は参考になるかもしれません。
http://hara.jpn.com/siwiki/_usl5p/ja/Home/%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html 
以下はDovcotのクイックコンフィグレーションのサイトです。
http://wiki2.dovecot.org/QuickConfiguration