(2015-09-16)
2号機で exim4 のセットアップをやってみます。
exim4とは、一言で言うとメール送信プログラム、ですかね。
ローカルホスト・リモートホストへの送信は可能ですが、リモートホストからの受信はできません。
デフォルトでは、ローカルホスト内でのメール送信のみ許可、の状態です。
ちなみに1号機ではすでに postfix + dovecot を稼働させています。
装置は Raspberry Pi、OSは Raspbian です。
ひとまずローカルホスト内のみのメール送受信とします。
目的の1つは、cronからのメールを受信したいということであります。
主な構成は 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宛に送られる場合が多々ありますので、実際に誰が受信するのか確認してみます。
$ 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
これでオッケーですよん(再起動も何も必要なし)。
別のホスト(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/のどこか)ようなので、やはり停止するのはよろしくないようです。
メールを送ると、下記のディレクトリに書き込みが発生するようです。
順にtmpfs化してみます。
すでに /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/ のパーミッションを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が勝手に作成します)。
おしまい。