(2015-09-16)

2号機で exim4 のセットアップをやってみます。
exim4とは、一言で言うとメール送信プログラム、ですかね。
ローカルホスト・リモートホストへの送信は可能ですが、リモートホストからの受信はできません。
デフォルトでは、ローカルホスト内でのメール送信のみ許可、の状態です。

ちなみに1号機ではすでに postfix + dovecot を稼働させています。

装置は Raspberry Pi、OSは Raspbian です。

構築のポリシー、目的など

ひとまずローカルホスト内のみのメール送受信とします。
目的の1つは、cronからのメールを受信したいということであります。

2号機の環境

主な構成は Raspberry Pi/機器構成/2号機 へ(大した内容ではない)。
2号機の環境

$ uname -a
Linux rasp01 4.1.6+ #810 PREEMPT Tue Aug 18 15:19:58 BST 2015 armv6l GNU/Linux

(いつの間にか カーネルが V4になっていたという・・・)

インストール

作業はスーパーユーザーです。
とりあえず下記を実行します(推奨パッケージが幾つか表示されますが後回し)。

$ su
# apt-get -d install exim4
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  exim4-base exim4-config exim4-daemon-light heirloom-mailx
提案パッケージ:
  eximon4 exim4-doc-html exim4-doc-info spf-tools-perl swaks
推奨パッケージ:
  mailx
以下のパッケージが新たにインストールされます:
  exim4 exim4-base exim4-config exim4-daemon-light heirloom-mailx
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
2,406 kB のアーカイブを取得する必要があります。
この操作後に追加で 4,260 kB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main exim4-config all 4.80-7+deb7u1 [478 kB]
取得:2 http://mirrordirector.raspbian.org/raspbian/ wheezy/main exim4-base armhf 4.80-7+deb7u1 [1,033 kB]
取得:3 http://mirrordirector.raspbian.org/raspbian/ wheezy/main exim4-daemon-light armhf 4.80-7+deb7u1 [635 kB]
取得:4 http://mirrordirector.raspbian.org/raspbian/ wheezy/main exim4 all 4.80-7+deb7u1 [7,808 B]
取得:5 http://mirrordirector.raspbian.org/raspbian/ wheezy/main heirloom-mailx armhf 12.5-2+deb7u1 [254 kB]
2,406 kB を 2秒 で取得しました (886 kB/s)
パッケージを事前設定しています ...
以前に未選択のパッケージ exim4-config を選択しています。
(データベースを読み込んでいます ... 現在 83399 個のファイルとディレクトリがイン ストールされています。)
(.../exim4-config_4.80-7+deb7u1_all.deb から) exim4-config を展開しています...
以前に未選択のパッケージ exim4-base を選択しています。
(.../exim4-base_4.80-7+deb7u1_armhf.deb から) exim4-base を展開しています...
以前に未選択のパッケージ exim4-daemon-light を選択しています。
(.../exim4-daemon-light_4.80-7+deb7u1_armhf.deb から) exim4-daemon-light を展開 しています...
以前に未選択のパッケージ exim4 を選択しています。
(.../exim4_4.80-7+deb7u1_all.deb から) exim4 を展開しています...
以前に未選択のパッケージ heirloom-mailx を選択しています。
(.../heirloom-mailx_12.5-2+deb7u1_armhf.deb から) heirloom-mailx を展開していま す...
man-db のトリガを処理しています ...
menu のトリガを処理しています ...
exim4-config (4.80-7+deb7u1) を設定しています ...
Adding system-user for exim (v4)
exim4-base (4.80-7+deb7u1) を設定しています ...
exim: DB upgrade, deleting hints-db
exim4-daemon-light (4.80-7+deb7u1) を設定しています ...
Starting MTA: exim4.
exim4 (4.80-7+deb7u1) を設定しています ...
heirloom-mailx (12.5-2+deb7u1) を設定しています ...
update-alternatives: /usr/bin/mailx (mailx) を提供するために 自動モード で /usr/bin/heirloom-mailx を使います
menu のトリガを処理しています ...

これでインストールから、デフォルト設定での起動まで完了です。
もうすでに exim4 が起動状態となっているはずです。

設定

ローカルホスト内のみのメール送信

「ローカルホスト内のみメール送信」となっているかを確認します(インストール直後のデフォルト状態)。
ファイル

/etc/exim4/update-exim4.conf.conf

に下記の行があるか確認します。

dc_eximconfig_configtype='local'

この local の部分が internet になっているとリモートホストへ配信する設定になりますので、ご注意ください。

リモートホストへのメール送信

ここでは触れません。exim4のデフォルトはローカル内のみメール送受信です。

ログローテーション

デフォルトでログローテーションの設定もされるので、特に何もしなくてもOKです。
ログファイルが /var/log/exim4/ の下に作成されます。ファイル名は mainlog , rejectlog, paniclog のようです。
ログの保存期間など変更する場合は、下記のファイルを変更します。

/etc/logrotate.d/exim4-base
/etc/logrotate.d/exim4-paniclog

メールキューのチェック間隔変更(任意)

ローカル内のメール送受信では、メールがキューに溜まることはめったに無いようなので、キューのチェック間隔を延ばします。
デフォルトは30分なので、3時間1秒に変更しました。
変更ファイル

/etc/default/exim4

変更点

< QUEUEINTERVAL='30m'
-
> QUEUEINTERVAL='3h1s'

変更したら exim4 を再起動します。

$ su
# /etc/init.d/exim4 restart

ご参考:
上記パラメータは、exim4を起動する際のコマンドラインオプション -q の追加パラメーターになります。

$ ps -ef | grep exim4
109       2396     1  0 13:09 ?        00:00:00 /usr/sbin/exim4 -bd -q181m

てな具合。

動作確認

普通にメール送信

下記のコマンドでメール送信してみます。ここでは、自分自身(ユーザー名 pi)へ送っています。
当たり前ですが、ローカルホストの存在するユーザーにしか送ることができません。

$ mail pi
Subject: hello, pi
this is test mail
.
EOT

Subject: の後ろ(hello...)から、EOTの直前のピリオドまでが、入力した内容です。

受信したメールの確認ですが、タイミングによっては以下のようにその場でシェルが教えてくれる場合もあります。

新しいメールが /var/mail/pi にあります

メールの実体は上記の通り、/var/mail/pi です。
mailコマンドで読むことができます。

rootへのメール送信

システムからの通知がroot宛に送られる場合が多々ありますので、実際に誰が受信するのか確認してみます。

$ mail root
Subject: hello, root
this is test mail for root
.
EOT

さて、/var/mail/ の下を見てみると・・・

$ ls -l /var/mail/
合計 4
-rw------- 1 mail mail 569  9月 16 16:30 mail
-rw-rw---- 1 pi   mail   0  9月 16 16:27 pi

mailというファイルができています。デフォルトでは root 宛のメールはユーザー mail が受信するようです。
ただし、ユーザー mail はログイン可能なユーザーではないので、代わりに別の誰かに受信してもらいたいです。

というわけで、root 宛のメールは ユーザー pi で受信させるため、下記のファイルの最後に1行追加します。
ファイル名

/etc/aliases

追加内容

root: pi

これでオッケーですよん(再起動も何も必要なし)。

リモートホストからのSMTP接続は不可、の確認

別のホスト(1号機 rasp00)から、このホスト(2号機 rasp01)へメールを送れるかやってみます。
接続のテストのみなので、sshコマンドで代用します(telnet入れてない・・・)。

$ hostname
rasp00
$ ssh -p 25 rasp01
ssh: connect to host rasp01 port 25: Connection refused

はい、拒否されました。リモートホストからのメール送信はできない、ということです。
ちなみに2号機でのメール受信待ち状態を見てみると・・・

$ netstat -nl | grep 25
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN

となっており、ローカルIPアドレスの25番ポートでのみ受付可能な状態となっておりますです、はい。

自由研究:デーモンの停止(結論:しないほうが良い)

下記によりexim4を停止しても、mailコマンドでメールを送ることができる。

$ su
# /etc/init.d/exim4 stop

mailコマンドの実体は下記。

$ ls -l /usr/bin/mail
lrwxrwxrwx 1 root root 22  9月 16 16:12 /usr/bin/mail -> /etc/alternatives/mail
$ ls -l /etc/alternatives/mail
lrwxrwxrwx 1 root root 23  9月 16 16:12 /etc/alternatives/mail -> /usr/bin/heirloom-mailx
$ ls -l /usr/bin/heirloom-mailx
-rwxr-xr-x 1 root root 298028 12月 17  2014 /usr/bin/heirloom-mailx

結局、ローカル送信のみなら、exim4 を停止しててもいいんじゃねーかよ~、てことで。
→何らかの要因でメール送信できなかった場合、スプールに保存しようとする(/var/spool/exim4/のどこか)ようなので、やはり停止するのはよろしくないようです。

SDカード更新頻度低減(オプション)

メールを送ると、下記のディレクトリに書き込みが発生するようです。

  • /var/log/exim4/ : exim4のログファイルが生成される。
  • /var/mail/ : 受信ユーザー名でファイルが作成される
  • /var/spool/exim4/ : メール送信処理用の中間ファイルとかのスプールらしい。

順にtmpfs化してみます。

/var/log/exim4/

すでに /var/log が tmpfs化されているのですが、exim4起動時に /var/log/exim4/ が存在しないとエラーが発生して起動してくれないので、OS起動時に /var/log/ の下に exim4 ディレクトリを作成するように仕込みます。
実はすでに下記のページで、OS起動時に /var/log/にディレクトリを作成するスクリプトを仕込んでいるので、そこへ処理を追加します。
こんな感じのものを。

EXIM4=/var/log/exim4
mkdir $EXIM4
chown Debian-exim:adm $EXIM4
chmod 2750 $EXIM4

グループIDは、exim4インストール時のデフォルトは Debian-eximだったかもしれませんが(メモし忘れた)、admにしました。
とにかく、これらを exim4 が起動する前までに作成する必要があります。

ご参考:Raspberry Pi/各種設定/log,tmpのオンメモリ(tmpfs)化

/var/mail/ と /var/spool/exim4

/var/mail/ と /var/spool/exim4/ のパーミッションをtmpfs化する前と後で同じします。
tmpfs化前パーミッションのメモ:

# ls -ld /var/mail /var/spool/exim4
drwxrwsr-x 2 root mail 4096  9月 17 11:27 /var/mail/
drwxr-xr-x 2 root root 4096  9月 17 11:08 /var/spool/exim4/

まずは /var/mail/ と /var/spool/exim4 の下のファイルを全部削除し(しなくてもいいが、ゴミが残るだけ)、それから /etc/fstab に tmpfsの設定を追加します。
ファイル /etc/fstab
追加内容:

tmpfs  /var/mail      tmpfs defaults,size=8m,noatime,mode=2775,gid=mail 0 0
tmpfs  /var/spool/exim4 tmpfs defaults,size=8m,noatime,mode=0750,uid=Debian-exim,gid=Debian-exim 0 0

ちなみに上記のgid, uidは管理人TKの環境では下記の値です。各人の環境によって読み替えてください。

gid : mail = 8
uid : Debian-exim 109
gid : Debian-exim 113

あとは再起動するなり、手動などでマウントします。
メールの送信確認もお忘れなく。

サブディレクトリは作成不要です(exim4が勝手に作成します)。

おしまい。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-02 (月) 15:44:27 (170d)