exim

(作成:2004/12)

Debianだと初期インスコ時に導入されるMTA。最初の頃はこりゃ何じゃらほいと思ったもので。だってクライアントユースでMTAなんて要らないじゃん。良くて外部メール鯖を使ったメールの遣り取りなんだからメーラーじゃん。不要だなーと思ってサービスから停止させてましたよ。 まぁ不要サービスの停止というのは恐らく間違ったことではないのだけれど、後々パッケージの依存関係とか見てたらMTAてシステムのエラー情報の送信に使われてるのね。

さておき。ホームサーバ立てると、ちょっとCGIで sendmail 使いたくなってきて、調べてたところeximで十二分に代用出来ることが解った。ので、切角だしこれを機会に設定ももうちょい細かく調べてみようかなー、てなわけで。

起動

デーモンとして動かす場合は以下のように。

# /etc/init.d/exim start

スーパーサーバに任せるも良し。TCP Wrapper掛けられるのでこっちの方が良いかも。

#### /etc/xinetd.conf

service smtp {
    socket_type = stream
    protocol    = tcp
    wait        = no
    user        = mail
    server      = /usr/sbin/exim
    server_args = -bs
}
# /etc/init.d/xinetd restart

元々 inetd が導入されている場合なら、exim導入時に /etc/inetd.conf にeximの項目が記述される。 xinetd.conf の設定内容については、そこからコンバートすることができる。

$ echo "smtp stream tcp nowait mail /usr/sbin/exim exim -bs" | /usr/sbin/itox

echo で記述されているものは /etc/inetd.conf に記述されているもののコピペ。 itox コマンドは xinetd パッケージに含まれている筈。

設定

初期設定

必要最低限の設定はeximインスコ時に対話的に設定できる。この初期設定を再度行ないたい場合は以下のコマンドにて。

# eximconfig

この初期設定画面について、備忘のためにちょこっと解説しとく。 最初にeximが設定済みであれば注意が表示される。まぁ無視するなり何なり。

次。(1)-(5)で選択しる、と言われる。それぞれ以下の意味みたい。

  1. インターネット上での送受信が可能な設定。
  2. インターネット上での受信が可能、送信は外部Smarthost(メール配送サーバ?)に丸投げ。アドレスのリライトも可能。
  3. 配信は外部Smarthostに丸投げ、マシン内ローカルでは配送しない。
  4. インターネットを用いず、マシン内ローカルにのみ配送。
  5. 設定しない。
Enter value (default=`1', `x' to restart):

さて。ここからちょっと設定が分岐するわけだ。

(1)を選択:標準的なメールサーバ設定

これは自宅サーバ公開が可能な場合の送受信可能な標準的な設定。

  • 送信時にFrom:行に表記されるドメイン
    よーするに自分のドメイン。
Enter value (default=`hyakki.local', `x' to restart): hyakki.local
  • localhosthyakki.local 以外に受け取るドメインがあるかどうか
    無いなら無視。
  • 他ドメインからのメール中継を許可するか
    踏み台にされるのも嫌なので要らん。
  • ローカルネットワーク内からのメール中継を許可するか
    取り敢えず要らん。
  • rootpostmaster 宛メールをリダイレクトするアカウント名
    よーするにAdmin宛メールなので、管理者がいつも使ってるアカウントが良い。 none と打てば取り敢えずrootのメールボックスに流してくれるらしい。複数指定したい場合は半角スペーズかピリオドで区切って記述。
    まぁ、後程 /etc/aliases ファイルを記述し直せば問題ないのだけれど。 ここで、既に /etc/aliases ファイルが存在する場合は置き換えて良いか聞いて来るので、適宜。
Enter value (`x' to restart): riyo

最後に設定内容を示してくるので、良ければ Enter

(2)を選択:Smarthost経由の配信設定

これは自宅サーバ公開に制限がある場合(1024番ポート以降しかダメ、とか)で、外部への送信をさせたい場合に便利。多分受信は出来ないと思う。
以降、設定内容は以下の通り。

  • 送信時にFrom:行に表記されるドメインを記述
    よーするに自分のドメイン。
Enter value (default=`hyakki.local', `x' to restart): hyakki.local
  • localhosthyakki.local 以外に受け取るドメインがあるかどうか
    無いなら無視。
  • 他ドメインからのメール中継を許可するか
    踏み台にされるのも嫌なので要らん。
  • ローカルネットワーク内からのメール中継を許可するか
    取り敢えず要らん。
  • どのマシンをSmarthostとして使うか
    実際に使用可能なSmarthostを指定。 これが結構曲者で、つまり他メールサーバを踏み台にするのと同義(だと思う)で、ここの紹介でも書いてある通り普通はメール中継を許可してるサーバなんてそうそう有るもんじゃない筈。実際、外部で別に借りているメールサーバは中継に出来なかった。
    でも多くの場合、契約ISPのメールサーバへなら、内部アクセスという形で使用可能な事が多い。てなわけで、ウチは契約ISPのメールサーバを用いることにした。
Enter value (`x' to restart): (ISPのメールサーバ)
  • rootやpostmaster宛メールをリダイレクトするアカウント名
    よーするにAdmin宛メールなので、管理者がいつも使ってるアカウントが良い。 none と打てば取り敢えずrootのメールボックスに流してくれるらしい。複数指定したい場合は半角スペーズかピリオドで区切って記述。
    (1)同様、後程 /etc/aliases ファイルを記述し直せば問題ない。 ここで、既に /etc/aliases ファイルが存在する場合は置き換えて良いか聞いて来るので、適宜。
Enter value (`x' to restart): riyo

最後に設定内容を示してくるので、良ければ Enter

(4)を選択:ローカル限定の配信設定

  • rootpostmaster 宛メールをリダイレクトするアカウント名
    よーするにAdmin宛メールなので、管理者がいつも使ってるアカウントが良い。 none と打てば取り敢えずrootのメールボックスに流してくれるらしい。複数指定したい場合は半角スペーズかピリオドで区切って記述。
    (1)同様、後程 /etc/aliases ファイルを記述し直せば問題ない。 ここで、既に /etc/aliases ファイルが存在する場合は置き換えて良いか聞いて来るので、適宜。
Enter value (`x' to restart): riyo

最後に設定内容を示してくるので、良ければ Enter

動作確認

早速テストしてみる。ローカル限定なんで、ローカルtoローカルならいけるわけで。

$ /usr/sbin/exim -t
To: root@hyakki.local
Viva la raza!
.

これで送信。取り敢えず受信してみよか。

# mail
Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/root": 1 message 1 new
>N  1 riyo@hyakki.local  Mon Aug 23 14:31   13/383   
& 
Message 1:
From riyo@hyakki.local Mon Aug 23 14:31:53 2004
Envelope-to: root@hyakki.local
To: root@hyakki.local
From: Riyo <riyo@hyakki.local>
Date: Mon, 23 Aug 2004 14:31:53 +0900

Viva la raza!

& quit
Saved 1 message in /home/root/mbox

受信も出来た。どっとはらい。