2019 年度 OSS リテラシー 3 : メール
メール
メールサーバの設定
MTA (Mail Transfer Agent) として postfix, sendmail, qmail が有名であるが, 今回は外部からのメール受信を行わないので高機能な MTA は必要ない. Debian のデフォルトの MTA である exim を用いることにする. mailutils パッケージをインストールすると, exim 関連のパッケージも一緒にインストールされる.
$ sudo -s # apt-get update # apt-get install mailutils
外部へメールを送るための設定を行う. メールの送信には高専のメールサーバ (red.matsue-ct.jp) をリレーする. 外部からのメールは受信しないことにする.
# dpkg-reconfigure exim4-config
dpkg-reconfigure コマンドを実行すると, ターミナル上にグラフィカルな設定画面が表示される. タブを押すと <了解> <取消> を選択することができる.
- メール設定のタイプ: スマートホストでメール送信; SMTP または fetchmail で受診する
- メールは全て高専のメールサーバ (スマートホスト) に送信するので. ラズパイから高専の外部のサーバへ SMTP できない.
- システムメール名: ホスト名 (= 学生番号)
- デフォルトのホスト名のまま変更しなくて良い. 後ほど書き換えを有効にする.
- 入力側 SMTP 接続をリスンする IP アドレス: 127.0.0.1
- 外部からのメールを受信しない. 127.0.0.1 はローカルホストを意味する IP.
- メールを受け取るその他の宛先: (空欄)
- 外部からのメールを受信しないので, 設定する必要がない.
- メールをリレーするマシン: (空欄)
- ほかのホスト向けのスマートホストにする必要がない
- スマートホスト: red.matsue-ct.jp
- 送信するメールでローカルメール名を隠しますか? : はい
- 表示するローカルユーザのドメイン名: epi.it.matsue-ct.jp
- epi.it.matsue-ct.jp は情報工学科杉山研究室のサブドメイン.
- これを有効にしないと, スマートホスト (red.matsue-ct.jp) が受信を拒否する.
- DNS クエリの数を最小限にとどめますか? : いいえ
- インターネットに常時接続しているので.
- ローカルメールの配送方法: /var/mail 内の mbox 形式
- 設定を小さなファイルに分割しますか? : いいえ
- root と postmaster のメール受信者: sugiyama
- 教員のアカウントにしておいて下さい.
ローカルメール配送の確認
ローカルメール配送の確認を行う. まずは mail コマンドを使ってメールを送る.
$ echo "本文" | mail -s "タイトル" hogehoge
mail コマンドで届いたメールを読む.
$ mail "/var/mail/hogehoge": 1 message 1 new >N 1 HOGEHOGE 土 10月 21 12: 15/466 title ? 1 (1 を入力) Return-path: <hogehoge@iot-00> Envelope-to: hogehoge@iot-00 Delivery-date: Sat, 21 Oct 2017 12:24:26 +0900 Received: from hogehoge by iot-00 with local (Exim 4.89) (envelope-from <hogehoge@iot-00>) id 1e5kOg-0000op-1k for hogehoge@iot-00; Sat, 21 Oct 2017 12:24:26 +0900 Subject: title To: <hogehoge@iot-00> X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <E1e5kOg-0000op-1k@iot-00> From: HOGEHOGE <hogehoge@iot-00> Date: Sat, 21 Oct 2017 12:24:26 +0900 本文 ? q (終わるときは q を入力) Saved 1 message in /home/hogehoge/mbox Held 0 messages in /var/mail/hogehoge
メールの配送ログを確認する. tail コマンドでログファイルの末尾のみを表示する (cat コマンドや less コマンドを利用すればログを全て表示することができる). 以下の例では, hogehoge@iot-00 (iot00 はローカルホスト) にメールを送り, 完了 (completed) していることがわかる.
$ sudo tail /var/log/exim4/mainlog ...(中略)... 2017-10-21 12:24:26 1e5kOg-0000op-1k <= hogehoge@iot-00 U=hogehoge P=local S=359 2017-10-21 12:24:26 1e5kOg-0000op-1k => hogehoge <hogehoge@iot-00> R=local_user T=mail_spool 2017-10-21 12:24:26 1e5kOg-0000op-1k Completed
自分宛てのメールの転送設定
自分宛てのメールを転送する場合は, ホームディレクトリに .forward ファイルを置く.
# exit $ vi ~/.forward xxxx@hogehoge.jp (自分自身のメールアドレスを 1 行だけ書く. 学外のメールアドレスを使う方が良い) $ chmod 600 ~/.forward
メールの転送の確認
先に行なった mail コマンドを再度実行する. 学校の PC や携帯でメールが届いたか確認すること.
$ echo "本文" | mail -s "タイトル" hogehoge
ログを確認する. 送信がうまくいけば, OK, completed などの文字が確認できる.
$ sudo tail /var/log/exim4/mainlog ...(中略)... 2017-10-21 12:52:55 1e5kqF-0001IH-2i <= hogehoge@iot-00 U=hogehoge P=local S=371 2017-10-21 12:52:55 1e5kqF-0001IH-2i => sugiyama@matsue-ct.jp R=smarthost T=remote_smtp_smarthost H=red.matsue-ct.jp [10.0.10.3] C="250 2.0.0 Ok: queued as 7CB4B294108C" 2017-10-21 12:52:55 1e5kqF-0001IH-2i Completed
もしもメールの配送ログを見て, 以下のようにエラーが生じている場合には, 設定が間違っている. その場合は送信エラーとなっているメールのキューを削除せよ. さらに先に行った dpkg-reconfigure コマンドを実行して再度設定を確認せよ.
$ sudo tail /var/log/exim4/mainlog 2017-10-21 12:36:17 1e5ka9-0000qv-Hn <= hogehoge@iot-00 U=hogehoge P=local S=371 2017-10-21 12:36:17 1e5ka9-0000qv-Hn == sugiyama@matsue-ct.jp R=smarthost T=remote_smtp_smarthost defer (-44) H=red.matsue-ct.jp [10.0.10.3]: SMTP error from remote mail server after RCPT TO:<sugiyama@matsue-ct.jp>: 450 4.1.8 <hogehoge@iot-00>: Sender address rejected: Domain not found # exim -bp | exiqgrep -i | xargs exim -Mrm (キューの削除) Message 1e5ka9-0000qv-Hn has been removed # dpkg-reconfigure exim4-config (設定しなおし) ...(略)...
root などのシステム宛てメールの転送設定
システムが発送する root 宛てのメールの宛先を自分自身に変更しておく. 意味としては, ":" の前に書かれているユーザ宛てのメールを ":" の後ろに書かれているユーザに送る, である. メールアドレスは学外のメールアドレスを用いると良い (学生の場合は, 学内アドレスへの転送がうまくできないため).
# vi /etc/aliases mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: xxxx@hogehoge.jp (この行を書き換える. 自分自身のメールアドレスに)
設定を有効にするには, newaliases コマンドを実行する必要がある.
# newaliases
ローカルメールの送受信確認
ローカルメール配送の確認を行う. まずは mail コマンドを使って /etc/aliases の内容が反映されているか確認する.
$ echo "本文1" | mail -s "タイトル1" root $ echo "本文2" | mail -s "タイトル2" webmaster $ echo "本文3" | mail -s "タイトル3" postmaster
課題
- メールのヘッダについて理解を深めるために以下を実行せよ.
- 上記演習で自分に届いたメール (含むヘッダ) を wbt のオンラインテキストにコピペせよ.
- メールヘッダ上のキーワード (Return-Path, Deliverd-To, Recieved, Mime-Version, Content-Type, Content-Transfer-Encording, From, To, Subject, Date, Message-Id, など) の意味を調べよ.
- メールヘッダの情報から読み取れることを文章でまとめよ.