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, など) の意味を調べよ.
    • メールヘッダの情報から読み取れることを文章でまとめよ.