LPIC-2 試験勉強メモ その 12

LPIC-2 試験勉強メモ その 12

電子メールサービス

メールシステム

略称名称説明
MTAMail Transfer Agentメールを受信し、配信先と配信プログラムを決定してメールを送信する
MDAMail Deivery AgentMTA からメールを受け取り、ローカルユーザーのメールボックスにメールを配信する
MUAMail User Agentユーザーが使用するメールプログラム

MTA は DNS の MX レコードにメールサーバーのホスト名を記述する。

postfix の設定

Postfix 概要

Postfix は IBM の Wiestse Venema 氏が開発し、1998 年末にリリースした製品のオープンソース版である。 sendmail との互換性を保ちつつ、複数のデーモンが連携して動作するアーキテクチャを採用する。

  • master.cf: 各デーモンの動作を記述する
  • main.cf: メールシステムのパラメーターを記述する
  • /etc/postfix: 設定ファイルをおくデフォルトのディレクトリ
  • /etc/aliases
  • /~/forward
  • var/spool/mail
デーモン説明
masterpostfix のマスタープロセス
postdropMUA からメールを受け取り、maildrop キューに投函する
pickupmaildrop キューからメールを取り上げて、cleanup に渡す
qmgrincoming キューのメール配送先と配送方法を決定する
smtpdSMTP による外部からのメールを受信する
smtpSMTP により外部へメールを送信する
メール送信の流れ
  1. postdrop が/var/spool/postfix/maildrop ディレクトリにメールを配置する
  2. pickup が maildrop ディレクトリからメールを取得し、 cleanup に渡す
  3. cleanup が着信メールのアドレスを処理し incoming キューに入れる
  4. qmgr が incoming キューのメールの配送先と配送方法を決定する
  5. ローカル配信の場合は local が /var/spool/mail ディレクトリにメールを配信する
  6. 外部への送信の場合は smtp が相手の smtp サーバーに接続してメールを配信している
メール受信の流れ
  1. smtpd が相手の smtp サーバーからメールを受信して cleanup に渡す
  2. cleanup が着信メールのアドレスを処理し、incoming キューに入れる
  3. qmgr が incoming キューのメール配送先と配送方法を決定する
  4. local が /var/spool/mail ディレクトリにメールを配信する

設定ファイル

  • /etc/postfix/main.cf: Postfix のパラメーターを設定するグローバルコンフィグレーションファイル
グローバルコンフィルレーションファイル
パラメーター説明
queue_direcctoryPostfix のメールキューディレクトリを指定 (処理中のメールが置かれる)
alias_mapsローカル配信エージェントが参照する別名データベースを指定 (通樹は /etc/aliases.db)
alias_databasenewaliases コマンドが更新するデータベースを指定
command_directoryPostfgix コマンドを配置するディレクトリを指定
daemon_directoryPostfix デーモンを置くディレクトリを指定
data_directoryPostfix のデータを置くディレクトリを指定
mail_spool_directoryローカル配信されたメールを置くディレクトリを指定
mail_ownerキューの所有者と master 以外のデーモンの所有者を指定
inet_interfacesメールを受信するインタフェースのアドレスを指定 (デフォルト: all)
inet_protocolsIPv4、IPv6 のサポートを指定 (all の場合は両方サポート)
myhostnameインターネット上のホスト名を指定
mydomainインターンメット上のドメイン名を指定
mydestination最終的な宛先が自ホスト宛として認識するドメイン名のリストを指定
sender_canonical_maps送信者アドレスのアドレス書き換えデータベースを指定
recepient_canonical_maps受信者アドレスのアドレス書き換えデータベースを指定
relayhost自組織以外の宛先メールを明示的に転送するホスト (指定しない場合は MX レコードから参照)

送信者アドレスの書き換え

  1. main.cf の canonical_classes で書き換える対象を指定する
    • canonical_classes = envelope_sender, hheader_sender
  2. main.cf の sender_canonical_maps でアドレス変換のデータベースを指定する
    • seder_canonical_maps = hash:/etc/postfix/sender_canonical
  3. 指定したファイルを編集する
    • @example.com @test.com
  4. postmap コマンドでデータベースを作成する
    • # postmap /etc/postfix/sender_canonical
  5. postfix コマンドで設定をリロードする
    • # postfix reload

aliases

aliases ファイルで別名に対しての転送先アドレスを記述することで転送設定できる。 :include: の後に絶対パスで指定したファイルに記述された別名をインクルードすることもできる。

別名:転送先アドレス, 転送先アドレス, 転送先アドレス, ...

転送先の指定説明
ローカルユーザー名ローカルユーザーの名前を指定
別名他の別名に転送する
電子メールアドレス電子メールアドレスを指定する
ローカルファイル名絶対パスで指定したファイルにメールを追加格納する
コマンド「|」の後ろにメールを処理するコマンドを指定する
インクルード:include: の後に絶対パスで指定したファイルに記述された別名をインクルードする

エイリアスデータベースは newaliases コマンドか postalias コマンドで更新する。

メール格納フォーマット

Maildir では配信されたメールは Maildir ディレクトリ配下に一意のファイル名で格納される。

  • tmp: メールは最初このディレクトリに置かれる
  • cur: 既読のメールが置かれる
  • new: 新着メールが置かれる

mbox ではすべてのメールを単一ファイルに平文で格納する。 複数メールを同時に受信した際には排他制御が必要になる。

メールソフトMaildirmbox
procmail
Postfix

セキュリティ

第三者に悪用されないよう、公開メールサーバーは次のようにセキュリティを担保する。

  • 内部ネットワークからのメールは外部ドメインへの中継を許可する
  • 宛先がローカルドメインの場合のみ受信を許可する

RBL (Realtime Blackhole List) はスパムメールやウイルスメールを発信している可能性のあるホストの IP アドレスが DNS レコードとして登録されたリストである。

メールキュー

mailq コマンドもしくは postqueue コマンドに -p オプションをつけることで配信用メールキューを sendmail 形式で表示できる。

何らかのトラブルにより送信できなかったメールは /var/spool/postfix 配下のメールキューに置かれ、一定間隔で再送を試みる。 一定期間過ぎても送信できないメールは削除される。

動作確認

telnet でポート番号 25 を指定し次の手順で SMTP コマンドを送る。

  1. EHLO (Extend HELLO: 開始) もしくは HELO
  2. MAIL FROM (SENDER: 送信者指定)
  3. RCPT TO (RECIPIENT: 受信者指定)
  4. DATA (BODY: 本文)
  5. QUIT (終了)

IMAP/POP の設定

受信サーバー

dovecot はフィンランドの Timo Sirainen 氏が開発し、 2002 年にリリースされた IMAP/POP3 サーバーである。 メールボックスフォーマットは mbox と Maildir をサポートする。

  • imap: 993
  • pop3s: 995
  • imap: 143
  • pop3: 110

SSL/TLS 接続もサポートしている。 標準プロトコルで接続後も暗号化通信を行う STARTTLS、ユーザー認証も CRAM-MD5 を含む多様な認証をサポートする。

  • 設定ファイル
    • v1: /etc/dovecot.conf
    • v2: /etc/dovecot/dovecot.conf と dovecot.conf 内のインクルード文によって記述される設定ファイル
パラメーター説明
mechanisms認証方式の指定 (v1 の場合)
auth_mechanisums認証方式の指定 (v2 の場合)
verbose_proctitle接続しているユーザー名と IP アドレスを ps ax コマンドに出力に表示
mail_locationメールの格納形式や保存先ディレクトリの指定

認証方式には次の硫黄なものを指定可能。

  • plain
  • login
  • digest-md5
  • crram-md5

doveadm コマンド

Dovecot の管理ユーティリティである。

サブコマンド説明
reload設定ファイルの再読み込みを行う
stopdovecot デーモンを停止する
mailbnoxユーザーのメールボックスの管理を行う
whoDovecot に接続しているユーザーの一覧を表示する

Sieve スクリプト

Sieve 概要

Sieve は電子メールのフィルタリングのためのスクリプト言語である。 2008 年 1 月に RFC5228 として標準化された。 特定の OS やメールシステムのアークテクチャには依存しない。

コントロールコマンド、アクションコマンド、テストコマンドから構成される。

コントロールコマンド説明
if, elseif, else条件判定を行う
require拡張機能を指定する
stop処理を停止する
アクションコマンド説明
keepユーザーのメールボックスに格納する
discardメールを破棄する
redirectメールの内容は変更せず、別のメールアドレスへ転送する
fileinto指定したメールボックスに格納する
テストコマンド説明
addressメールアドレスをテストする
allof論理積をテストする
anyof論理和をテストする
sizeメールのサイズをテストする

テストコマンドで使用できる文字列の比較には次のようなものを利用できる。

文字列比較説明
:contains文字列の一部が一致した場合に真
:is文字列が完全一致した場合に真
:matchesワイルドカード「*」または「?」を含めて完全一致の場合に真

Dovecot Pigeonhole プロジェクトがローカルメールボックスへ配送する Local Delivery Agent を提供している。 Dovecot LDA は Sieve スクリプトを解釈するインタプリタである。 Postfix で使用する場合は main.cf 中のパラメーター 1mailbox_command で Dovecot LDA を指定することで、メールボックス配信時に実行する。 Sieve 以外の LDA としては procmail がある。