メールサーバ 情報システム管理 第11回 メールサーバ 水野嘉明 情報システム管理
本日の内容 1. 電子メールの仕組 メールの仕組や、プロトコルに ついて 2. メールサーバの設定 メールの仕組や、プロトコルに ついて 2. メールサーバの設定 SMTPサーバと、POP3/IMAP4 サーバの設定について 3. spam について spamと、その対策について 2
1. 電子メールの仕組み 1.1 メール配送の仕組み 1.2 各エージェントの解説 1.3 プロトコル 1.4 メールアドレス 1.5 電子メールの構成 3
1. 電子メールの仕組み 電子メール(e-mail) とは ネットワークを通じて文字メッセージを交換するシステム 文字以外のファイルも送受信可能 インターネット以外でも利用されているが、ここではインターネットのメールを説明する 4
1.1 メール配送の仕組み メール サーバ メール サーバ インターネット ユーザ ユーザ 5
1.1 メール配送の仕組み 数種類の、エージェント (Agent)と呼ばれるソフトウェアが、メールを転送していく 代表的エージェントは、MUA、MTA、MDA など (注) agent : 代理人 6
1.1 メール配送の仕組み DNS MTA MUA MSA MDA MRA メールサーバ SMTP(25) MailBox (メールソフト) (25/587) メールサーバ 7
1.1 メール配送の仕組み MTA MUA MSA MDA MRA メールサーバ SMTP(25) MailBox POP (110) (メールソフト) MSA MDA MRA メールサーバ 8
1.2 各エージェントの解説 MUA (Mail User Agent あるいは Message User Agent) ユーザが使うメールソフト ユーザの端末(クライアント)上で動作する AL-Mail, OutlookExpress, Becky!, Thunderbird, Evolution, Mew, Sylpheed など、多数ある 9
1.2 各エージェントの解説 MTA (Mail Transfer Agent) メール配送ソフト バケツリレー式にメールを転送し、相手先サーバに届ける MDAとMTAはセットや一体になっている場合も多く、メールサーバ全体のことをMTAという場合もある 10
1.2 各エージェントの解説 MDA (Mail Delivery Agent) 届いたメールをメールボックスに保存する MTAと一体のソフトとなっていることも多い 1台のサーバにユーザが多数いる場合に使われることが多い 11
1.2 各エージェントの解説 MRA (Mail Retrieval Agent) メールボックス内のメールを、MUAに引き渡す 12
1.2 各エージェントの解説 MSA (Mail Submission Agent) MUAからのメール送信(投稿)を受付ける 587番ポートを使い、認証も行う spam対策のため、メール送信にもユーザ認証が必要になり追加 13
1.3 プロトコル インターネット上で電子メールを送信・中継・受信するためのプロトコル SMTP 1.3 プロトコル インターネット上で電子メールを送信・中継・受信するためのプロトコル SMTP メールサーバのメールボックスに書き込まれたメールを読み出すためのプロトコル POP (POP3) IMAP (IMAP4) 14
1.3 プロトコル SMTP Simple Mail Transfer Protocol メール送受信のためのプロトコル 1.3 プロトコル SMTP Simple Mail Transfer Protocol メール送受信のためのプロトコル メールクライアント(MUA)からメールサーバ(MTA)へ 投稿 メールサーバ間の転送 25番ポート を使用 15
1.3 プロトコル POP (POP3) Post Office Protocol (Ver.3) メールボックス操作のためのプロトコル 1.3 プロトコル POP (POP3) Post Office Protocol (Ver.3) メールボックス操作のためのプロトコル メールサーバのメールボックスを開き、新着メールをチェックする 新着メールがあれば、読み出す 認証機能を持つ ポート番号 110 16
1.3 プロトコル IMAP (IMAP4) Internet Message Access Protocol 1.3 プロトコル IMAP (IMAP4) Internet Message Access Protocol POPと同様、メールボックスからメールを取り出すためのプロトコル POPと異なり、受信メールをメールサーバ上で管理する ポート番号 143 17
1.3 プロトコル <POPの場合> <IMAPの場合> メールサーバ ← → クライアント(PC) メールボックス (新着メール) 1.3 プロトコル <POPの場合> メールボックス (新着メール) メールクライアント フォルダ(既読メール) <IMAPの場合> メールボックス (未読メール) メールクライアント フォルダ(既読メール) メールサーバ ← → クライアント(PC) 18
1.3 プロトコル メールの暗号化 POP3/IMAP4では、ネットワーク上を平文のパスワードが流れる ⇒ 盗聴される危険性 1.3 プロトコル メールの暗号化 POP3/IMAP4では、ネットワーク上を平文のパスワードが流れる ⇒ 盗聴される危険性 パスワードを暗号化 ⇒ APOP 全てを暗号化 ⇒ POP3S、 IMAP4S 19
1.4 メールアドレス メールアドレスの形式 ローカル部@ドメイン いわゆるユーザ名 ホスト名 (例) y-mizuno@toyonet.toyo.ac.jp 20
1.4 メールアドレス ローカル部(ユーザ名)は、そのドメイン(ホスト)でユニーク ホストがUNIXマシンの場合は、普通 UNIXのユーザ名と一致 21
1.4 メールアドレス DNSとメール ドメインに複数のホストがある 各ホストでメールを受信するのではなく、メールサーバでまとめて受信したい DNSのMX (Mail Exchange) レコードにて、メールの配送先を指定する 22
1.4 メールアドレス /etc/named.conf の設定 このドメインのホスト ⇒ mail、a、b a.hoge.com. MX 10 mail.hoge.com. b.hoge.com. MX 10 mail.hoge.com. このドメインのホスト ⇒ mail、a、b hoo@a.hoge.com や bar@b.hoge.com へのメールは、mail.hoge.com というメールサーバに送られる 23
1.5 電子メールの構成 電子メールは、次の三つで構成 エンベロープ メールヘッダ メール本文 メールは、ASCIIが前提 ASCII以外の文字や、文字以外の情報は、MIME エンコーディングされる 24
1.5 電子メールの構成 【参考】 MIME Multipurpose Internet Mail Extension ASCII以外の文字(漢字等)やバイナリデータ(画像、音声等)を符号化 本文を分割 = マルチパート Content-Type: text/html; charset="iso-2022-jp" Content-Type: multipart/mixed; boundary="..." 25
1.5 電子メールの構成 メールの構成 エンベロープ (封筒) 封筒の中身 メールヘッダ メール本文 あて先: xxx@yyy.yyy 差出人: zzz@ww.ww 封筒の中身 メールヘッダ メール本文 26
1.5 電子メールの構成 エンベロープとメールヘッダ メールのあて先は、SMTPコマンドにより、エンベロープに書かれる (ヘッダは参照されない) 通常のメーラは、メールヘッダからエンベロープのあて先を作成する 最終目的地のメールサーバに配送されたあとは、エンベロープは消えてしまう 27
1.5 電子メールの構成 主なヘッダ情報 Return-Path Received From Reply-to Subject Date To 、Cc 、 Bcc 28
1.5 電子メールの構成 (メールヘッダの例) Return-Path: <11-19287-0-0-0-436151-1-b01_itscom_net@cm Delivered-To: y_mizuno@b01.itscom.net Received: (qmail 17988 invoked from network); 14 Apr 2008 0 Received: from unknown (HELO scanichi17.ns.itscom.net) (21 by localhost with SMTP; 14 Apr 2008 06:28:14 +0900 : Message-ID: <C_M_M_I_D.11_0_19287_0_0.436151.120812 From: 日経ビジネス オンライン <nbonline@nikkeibp.co.jp> To: <y_mizuno@b01.itscom.net> Subject: 【NBonline No.486】「チャンビー」に見る“成功の法則” Date: Mon, 14 Apr 2008 06:28:10 +0900 MIME-Version: 1.0 Reply-To: <nbonline@nikkeibp.co.jp> Content-Type: text/plain;charset="ISO-2022-JP" Content-Transfer-Encoding: 7bit 29
2. メールサーバの設定 2.1 SMTPサーバの種類 2.2 Postfix の設定 2.3 POP3/IMAP4サーバ 2.4 サーバの起動 2.5 メールアドレスの作成 30
2. メールサーバの設定 メールを配送するための、SMTPサーバ (MTA) Postfix メール読み出しのための、POP3 / IMAP4 サーバ (MRA) dovecot 31
2.1 SMTPサーバの種類 SMTPサーバの種類 sendmail 広く使われている 古い、設定が複雑 セキュリティホールが頻発 qmail もう更新されていない Postfix 新しい、設定が容易 32
2.2 Postfixの設定 Postfixの設定ファイル /etc/postfix/main.cf 設定の形式 項目名 = 値 ★「設定が簡単」と言われているが、 設定可能な項目は数百ある 33
2.2 Postfixの設定 多くの設定ファイルと同様、コメントによる説明がたくさんある 例: # LOCAL PATHNAME INFORMATION # # The queue_directory specifies the location of the Postfix queue. # This is also the root directory of Postfix daemons that run chrooted. # See the files in examples/chroot-setup for setting up Postfix chroot # environments on different UNIX systems. queue_directory = /var/spool/postfix # The command_directory parameter specifies the location of all # postXXX commands. command_directory = /usr/sbin # The daemon_directory parameter specifies the location of all Postfix 34
2.2 Postfixの設定 自身の設定 ホスト名を設定する myhostname = hoo.bar.co.jp ドメイン名を設定する 通信を許可するインターフェース myhostname = hoo.bar.co.jp mydomain = bar.co.jp inet_interfaces = all 35
2.2 Postfixの設定 外行きのメールに使うドメイン名 送信したメールがどのドメインから来るように見えるかを指定する "user@$mydomain"となる (注)"$mydomain"は、"mydomain" に設定した値を表す myorigin = $mydomain 36
2.2 Postfixの設定 受け取るべきメールのドメイン mydestination = $myhostname このマシンが他のマシンに転送せずにローカルに配送するドメインを指定する mydestination = $myhostname localhost.$mydomain localhost $mydomain 37
2.2 Postfixの設定 メールの中継元となるクライアント mynetworks = 133.79.60.0/24 指定したドメインからのメールは、他のドメイン(MTA)に転送する この指定以外のドメインからのメールは、relay_domains指定による mynetworks = 133.79.60.0/24 127.0.0.0/8 38
2.2 Postfixの設定 メールを中継して渡す配送先 relay_domains = よそ者(mynetworks指定外)からのメールは、転送しない relay_domains = 39
2.2 Postfixの設定 注意 mynetworks や relay_domains の設定を間違えると、spamをばら撒くための踏み台にされる事がある 転送 40
2.3 POP3/IMAP4サーバ POP3、IMAP4のサーバにも、いろいろなソフトがある Qpopper Courier-POP/Courier-IMAP UW IMAP Server Cyrus dovecot 41
2.3 POP3/IMAP4サーバ dovecotの設定 設定ファイルは /etc/dovecot.conf 使用するプロトコルを指定する # Protocols we want to be serving: # imap imaps pop3 pop3s protocols = pop3 42
2.4 サーバの起動 SMTPサーバ、POP3/IMAP4サーバの起動 invoke-rc.d / update-rc.d コマンド service / chkconfig コマンド 43
2.4 サーバの起動 ファイアウォールの設定 ファイアウォールで、メールの送受信を許可する $ iptables -I INPUT -p tcp -m tcp --dport smtp -j ACCEPT $ iptables -I INPUT -p tcp -m tcp --dport pop3 -j ACCEPT $ invoke-rc.d iptables save filename 44
2.5 メールアドレスの作成 メールアドレスは、メールサーバにユーザを作成すれば良い メールのみのユーザがログイン できるのは、望ましくない ⇒ シェルを無効にしたユーザを追加 45
2.5 メールアドレスの作成 ユーザを作成 "suzuki"というユーザ名を作成 suzuki@xxx.xx でメール受信は出来るが、シェルが false なのでログインは出来ない $ useradd -s /bin/false suzuki 46
2.5 メールアドレスの作成 パスワードを設定 (rootで ユーザsuzukiのパスワードを設定) $ passwd suzuki Changing password for user suzuki. 新しいUNIX パスワード: 新しいUNIX パスワードを再入力してください: passwd: all authentication tokens updated successfully. (rootで ユーザsuzukiのパスワードを設定) 47
2.5 メールアドレスの作成 ユーザがパスワードを変更できるようにするには、ログインシェルを /bin/false の変わりに /usr/bin/passwd とする という方法もある ⇒ ログインすると、passwd が走る ツールを使用して、OSのユーザとは別にアカウントを作成することも可能 48
3. spamについて 3.1 spamとは 3.2 spam対策 3.2 フィルタリング 49
3.1 spamとは spamメールとは 無差別、大量に配布される迷惑メール 内容は、 出会い系サイトやアダルトサイト、マルチ商法、怪しげな商品の宣伝 ワンクリック詐欺サイト、フィッシングサイトへの誘導 50
3.1 spamとは spam の語源 元々は、米国のランチョンミートの缶詰の名前 51
3.2 spam対策 MSAの利用、SMTP認証 spamメールの発信を拒否 (認証がないと 誰でも発信できる) MTAの転送を制限 (最近は、ボットによる送信が主流) 52
3.2 spam対策 一般的なセキュリティの強化 ボットにされないようにする フィルタリング spamメールを判別し、取り除く 53
3.3 フィルタリング spamメールのフィルタリング MUA(メールソフト)で、spamメールはフィルタリングしている メールボックスがパンクしてしまうので、MTA(メールサーバ)でのフィルタリングも必要 54
3.3 フィルタリング フィルタリングのアルゴリズム 単純なもの 送信者やサーバのアドレスでチェック Subjectや本文中の特定の単語をチェック (「広告」「SEX」「交際」など) 55
3.3 フィルタリング ベイジアンフィルタ 統計的文書分類技法 教師(利用者)の指示により、学習する 協調フィルタリング 複数の利用者の共同作業により、学習していく 56
3.3 フィルタリング spamフィルターの例 SpamAssassin ユーザが多い ベイジアンフィルタ、協調フィルタリングなど Bogofilter ベイジアンフィルタ POPFile 57
【付録】 spamへの対応 むやみにメルアドを、ばら撒かない メイン用のアドレスと、公開用アドレスを分ける ⇒ 公開用アドレスは、すぐに変更 できるもの Webサイト等に、メイン用アドレスを載せない 58
【付録】 spamへの対応 spamメールを受信した時 メール内のURLにアクセスしない 返事(配信停止依頼)を出さない 59
【付録】 spamへの対応 spamで宣伝されている物品やサービスを購入しない 商売になっている限り、spamはなくならない 60
お疲れ様でした