Mail
電子メール

講義

電子メールの歴史,仕組み,設定方法について説明する.

電子メールの歴史と仕組み

電子メールを送信するプロトコルとして SMTP (Simple Mail Transfer Protocol) が用いられる.SMTP では TCP を用いて通信を行う.この演習では SMTP サーバとして postfix を使用する.

初期の電子メールでは電子メールは特定のホストからホストへ送信されことを想定していた. この場合,両方のホストが起動していないとメールの送信が行えず,その場合は 時間をおいて送信を繰り返すように設計されていた. インターネット利用者が常時起動しているワークステーションを利用している研究者などに 限られていたときはこの方式で問題なかったが,インターネットが普及し,一般の PC でメールを送受信するケースが一般的になると問題がある. PC の場合,自分が使用する間だけ電源を入れているのが一般的であり, 送受信のホストが同時には起動していないことが多いからである.

メールサーバとDNS

現在では上記の理由により,電子メールはホスト単位で送受信するのではなく, メールサーバと呼ばれる常時起動しているホストがまとめて メールの送受信を担当する設定が一般的である.メール送信サーバと受信サーバは 同一サーバでも別のサーバでもよい.メール送信サーバは SMTP を実行するサーバで SMTP サーバとよぶ.どの SMTP サーバを利用するかはクライアントが設定して 選択する.インターネットプロバイダを利用する場合はたいていの場合, SMTP サーバはプロバイダ側から指定される.

メール受信サーバは,ドメイン単位でそのドメイン宛のメールを処理する サーバを設定することが一般的である.ドメイン単位であるため, ドメインの担当受信サーバを指定するには DNS を使用する. DNS の MX レコードを記述することで, あるドメイン宛のメールをどのメールサーバが処理するかを指定する. たとえば,あるドメインのホストのユーザ宛のメールを出す場合, 送信サーバは DNS に問い合わせを行いそのドメインの担当メールサーバを 調べる.担当メールサーバが記述されていれば, 送信サーバはそのドメインのホスト宛のメールはすべて担当メールサーバに 転送する.

メールをサーバから読み出すプロトコル

メール受信サーバで受信されたメールは受信サーバに蓄積される. 最終的にユーザが直接利用するホストからそのメールを読むためには メール受信サーバからメールの内容をユーザのホストへ転送しなければ ならない.これにはいくつかのプロトコルが利用されている.

代表的なものとして POP (Post Office Porotocol) と IMAP (Internet Message Access Protocol) がある. 両者の大きな違いは POP ではメールをクライアントに送信し, クライアントでメールを管理することを前提にされているのに対し, IMAP はサーバ側にメールを保存し,サーバ側で管理することを 前提としている点である.POP はサーバのメール保存容量が限られていて いつも同じホストでメールを読む場合に適している.それに対し,IMAP は サーバの保存容量に余裕があり,読むホストが複数あったり,容量の制限が ある場合に適している.この実習では POP のバージョン 3 を使用する.

実習

実習 0

第 9 回 DNS基本設定実習 2 と同様に 各班の4台のホストからなるサブドメインを構成し,班の DNS サーバに 委任する構成にする.ただし,今回は 1 号機ではなく 2 号機をサーバ にする.

各 pc の名前を,班番号の 2 桁表記を A とすると 各班の教卓に向かって左側から pcA1, pcA2,...,pcA4 とする.

4 台の PC すべてを Ubuntu で起動し, ターミナルを開いて管理者権限で hostname pcAX (X は左から順につけた 1 から 4 の端末番号) コマンドを実行し,ホスト名を正しくつけよ.

キーボード左上のシールの番号の下2桁の数字がxx とすると,その計算機の IP アドレスを 172.17.2.xx とする.

他の情報は全てのホストで共通である. サブネットマスクは 255.255.0.0, デフォルトゲートウェイは 172.17.254.254, 優先DNSサーバのアドレスは 172.17.2.60, として設定せよ.

次に, pcA2 にDNS サーバをインストールし,設定する. 第 9 回 DNS基本設定の実習 2 を 参考にpcA2 にDNS サーバをインストールし, 各班の pcA1 からpcA4 の名前解決 ができるようにサーバを設定せよ.(named.conf.local の内容を変更し, db.gA のファイルの設置してサーバを再起動)

教卓のネームサーバ pc151(172.17.2.60)は各班の pcA2 に gA.1b202.jt.u-tokai.ac.jp サブドメインの権限を委任する設定となっている.

参考:教卓の設定

named.conf.local(第9回実習2と同じ)

db.1b202

db.17(第9回実習2と同じ)

pcA1.gA.1b202.jt.u-tokai.ac.jp から pcA4.gA.1b202.jt.u-tokai.ac.jp に対して nslookup を実行し,正しい IP アドレスが検索できることを確認せよ.

実習 1

pcA2 をメールサーバとして設定する. pcA2 に postfix をインストールせよ.(root 権限が必要)

postfix をインストールする途中でいくつか入力しなければならない箇所がある. ターミナルから apt-get update を一度行った後, apt-get install postfix を実行してインストールすることができるが, この場合はターミナル画面でキーボードのみで入力するのでインターフェースに注意が 必要である.このインターフェースでは項目の移動には Tab キーを使い, 選択にはカーソルキー,決定はスペースまたはEnter である.

入力する必要があるのは,「メール設定の一般形式」:インターネットサイト と, 「システムメール名」:pcA2.gA.1b202.jt.u-tokai.ac.jp である.

postfix の設定ファイル,/etc/postfix/main.cf のうち,以下 2 つの変数の設定を下のように書き換えよ.(要 root 権限)

myhostname = pcA2.gA.1b202.jt.u-tokai.ac.jp
mynetworks = 172.17.0.0/16, 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

sudo service postfix restart を行い postfix を再起動せよ.(要 root 権限)

dovecot-pop3d をインストールせよ.(要 root 権限)

dovecot-pop3d をインストールした後,設定ファイル /etc/dovecot/dovecot.conf の以下の部分を変更せよ.

#ssl = yes

変更前

ssl = yes

変更後

変更後に service dovecot restart で dovecot を再起動せよ.

実習 2

pcA3 上でメールクライアントを利用する.メールクライアントとしては様々なものが利用できるが, 本実習では Ubuntu のデスクトップ版に標準でインストールされている Evolution メールを利用する.

この演習では班の全てのpcに同じログイン名で各班員の アカウントがあることを仮定している.各班員は特に pcA2 と pcA3 に自分のアカウントが 同じログイン名で存在していることを確認せよ. 確認した班員のアカウントどれかで pcA3 にログインせよ. 以下の説明ではログインしたユーザ名を user とする

Evolution メールのアイコンは画面上のツールバーの右寄りにある 封筒の形のアイコンである.クリックし,起動せよ.

初回起動時にいくつか入力しなければいけない情報があるので次のように入力せよ.

「身元情報」画面で, 「氏名」 にuser, 「E-メール・アドレス」に user@pcA2.gA.1b202.jt.u-tokai.ac.jp

「メールの受信」画面で, 「サーバ種別」は POP, 「サーバ」は pcA2.gA.1b202.jt.u-tokai.ac.jp, 「ユーザ名」は user, 「セキュアな接続を利用する」は SSL で暗号化する,を選択する.

「受信オプション」画面はデフォルトのまま進む.

「メールの送信」画面で, 「サーバ」に pcA2.gA.1b202.jt.u-tokai.ac.jp を入力する.

設定を間違えたときはメニューバーの「設定」から「編集」で変更ができる.

これでクライアントの Evolution メールからメールが送れる状態になっている. 自分のメールアカウント user@pcA2.gA.1b202.jt.u-tokai.ac.jp へメールを送信し,受信できることを確認せよ.

エラーメッセージが出た場合はエラーメッセージをよく見て,タイプミスがないか確認せよ. 設定情報の修正はメニューバーの「編集」->「設定」で行うことができる.

自分あてのメールの送受信が確認できたら, pcA2 上の 班の他の班員のメールアドレスへ メールを送れ.メールアドレスのuserの部分を 相手のユーザ名に変更したものが相手のメールアドレスとなる.

一旦ログアウトし,上でメールを送った他の班員のユーザ名でログインし, Evolution メールを同様に設定してメールを受信し,確認せよ.

実習 3

送られて来たメールはメールサーバホストのスプールと呼ばれる場所に 一旦蓄積される.今回の設定では pcA2 の /var/spool/mail ディレクトリである.

メールがサーバに届いた後,読まれる前のメールはスプールに蓄積されている. 班員のどれかのユーザでログインした状態で全員にメールを送り, 読む前の状態で以下の手順でスプールの状態を確認する.

スプールの内容はパーミッションの設定により本人以外には読めないようになっている. 全員のメールスプールの内容を確認するには root 権限が必要である.

/var/spool/mail ディレクトリに 移動し,ls -l コマンドでスプールファイルのパーミッションを確認せよ. それぞれの内容を確認し(要 root 権限),送ったメールが保存されていることを確認せよ.

実習 4

多くの場合,ドメイン内の個々の計算機がすべて メールをスプールするような運用はせず,ドメインの代表の メール受信サーバを設定し,ドメイン内のメールはすべてそこで スプールされるように設定する.この場合, メールアドレスにホスト名 pcA2 を書くのは無駄で, user@gA.1b202.jt.u-tokai.ac.jp でメールが届くように設定することがほとんどである.以下でその設定を行う.

あるドメインのメールをどのホストが処理するのかを指定するには DNS を利用する.DNS の MX レコードは,ドメインに送られて来た メールをどこに送ればいいのかを指示するものである.今回は gA.1b202.jt.u-tokai.ac.jp ドメインに送られて来たメールのメール処理は pcA2.gA.1b202.jt.u-tokai.ac.jp が行うという指定をする.

gA.1b202.jt.u-tokai.ac.jp ドメインの権限をもつ ネームサーバは pcA2 であり, pcA2 のゾーンファイル /etc/bind9/db.gA に設定が 記述されている.このファイルの NS レコード行の下に以下を追加し, シリアル番号を上げて bind9 を再起動せよ.(要 root 権限)

@       IN      MX 10     pcA2.gA.1b202.jt.u-tokai.ac.jp.

pcA2 の /etc/postfix/main.cf にも変更が必要である. gA.1b202.jt.u-tokai.ac.jp あてのメールも自分あてだと 定義する必要が有るので以下のように変数 mydestination を変更する.

mydestination = gA.1b202.jt.u-tokai.ac.jp, pcA2.gA.1b202.jt.u-tokai.ac.jp, ubuntu, localhost.localdomain, localhost

実習 5

あるアドレスに送信することで,登録された複数のユーザに同じメールが送信される仕組みを メーリングリストという. postfix はエイリアス機能であるアドレスへのメールを 他のアドレスにメールを転送することができる. 複数のアドレスに同じメールを転送するように設定することで 簡易メーリングリストを作成することができる.エイリアス情報が書かれているファイルは /etc/postfix/main.cf ファイルの

alias_maps = hash:/etc/aliases

で確認できる.この場合は /etc/aliases ファイルに書かれている. このファイルに別名の定義を行う.例えば gA.1b202.jt.u-tokai.ac.jp ドメインの user1, user2, user3 を構成員とするメーリングリストを作り, メーリングリストの名前を users とする場合を考える. この場合は users@gA.1b202.jt.u-tokai.ac.jp あてのメールが来ると user1@gA.1b202.jt.u-tokai.ac.jp, user2@gA.1b202.jt.u-tokai.ac.jp, user3@gA.1b202.jt.u-tokai.ac.jp に同じメールを転送させるように設定すればよい. この設定は /etc/aliases ファイルに以下の記述を加える.(要 root 権限)

users: user1,user2,user3

上記ファイルをエディットしただけでは変更は反映されない. newaliases コマンド実行し(要 root 権限),設定を 反映させよ.

簡易メーリングリスト宛にメールを送信し,同じメールが転送されていることを確認せよ.

発展実習 6

ここまでの設定を完了した班同士で他班のユーザとのメールの送受信を行え.

課題

第 12 回課題「mail」 を提出せよ.


Updated in July 6, 2012, index.html, Yamamoto Hiroshi