postfixでメール送信 メールサーバーを作ろう!

postfixの構築

postfixはメール送信用メールサーバー構築ソフト

メール送信を行うプロトコルはsmtpです。

SMTPメール送信の仕組みSMTPメール送信プロトコルの仕組み

smtpサーバーを構築するソフトウェアはいくつもありますがその中でも有名なものはpostfixです。

postfixはMTA(Mail Transfer Agent)であり、他のメールサーバーやメールクライアントからSMTPで送られてきたメールを25番ポートで待ち受け、SMTPで他のメールサーバーに送信する働きをします。

ここではpostfixのインストールから設定方法などを解説していきます。

postfixのインストール

postfixはyumでインストールできます。CetOS7では標準でインストールされているので特にインストールする必要は無いと思います。

# yum install postfix

postfixの起動はsystemctlを用います。

systemctl start postfix

標準MTAの設定

MTAにはpostfix以外にもqmailやsendmailなどがあります。これらが標準のMTAになっていることがあるのでpostfixに変更します。

# alternatives –config mta

上記コマンドコマンドを入力するとインストールされているMTAが一覧表示されます。selection列の数字に*がついているものが標準に使用されるMTAです。

+マークがあるものが現在選択されているMTAになります。変更したい場合は番号を選択してEnterを押します。

alternativesでMTAの変更

alternativesでMTAの変更

main.cfの設定 〜 postfixの設定1

postfixは/etc/postfix/main.cfが設定ファイルです。多くの設定項目がありますが、必要最低限の項目を編集すれば動作します。

設定項目一覧

  1. queue_directory:キューの置き場 例:/var/spool/postfix
  2. command_directory = /usr/sbin
  3. daemon_directory = /usr/libexec/postfix
  4. data_directory = /var/lib/postfix
  5. mail_owner = postfix
  6. myhostname:サーバーのFQDN 例:mail.example.com
  7. mydomain:所属するドメイン名 例:example.com
  8. myorigin:通常はmydomainを指定 例:example.com
  9. inet_interface:SMTP接続を受けるNICを指定 例:all
  10. mydestination:ローカル配送させるホスト名
  11. mynetworks:信頼するnetworkを登録、mydomainでない場合は中継:localhost, 127.0.0.1
  12. home_mailbox:メールボックス形式 例:Maildir/

main.cfファイルはたくさんの項目が書かれていて変更箇所がわかりにくいです。そこでデフォルト値と異なる部分だけ出力するコマンドpostconf -nを実行するとわかりやすいです。

postconf -n

postconf -n > new_main.cf としてファイルを打ち出すこともできる

MailBoxとMailDir形式
メールの保存形式にはsendmailで用いられている一つのファイルをメールボックスとして全てのメールを書き込んで管理するMailBox形式とqmailで採用されている受信箱、送信箱などのディレクトリを作ってメールを振り分けて管理するMailDir形式があります。postfixでは両者とも利用することができます。

転送設定 /etc/aliasesの設定

転送設定はetc/aliasesにあるファイルで転送設定できます。

etc_aliacses

etc_aliacses

etc/aliasesの設定では「宛先:転送先」というように設定します。
mailer-daemon: postmasterの意味は、mailer-daemonあてのメールはpostmasterに転送される設定という意味です。

mailer-daemonは送信エラーなどがあった時に送信元に知らせるユーザーです。

設定後にはnewaliasesコマンドを使用してアプリケーションが読み取れるバイナリファイルaliases.dbを生成させます。

# newaliases

一般ユーザーの転送設定

etc/aliasesはルートのみ編集可能なので、一般ユーザーが転送設定を行うにはユーザーホームディレクトリに.forwardファイルをおいて設定します。

.forwardファイルの中にexample@test.net と記述すれば、ユーザあてのメールは​exaple@test.net​に転送されます。

メールキュー

送信メールは一度メールキューに格納してから随時送信処理されます。

送信に問題があった場合はメールキューにたまります
メールキューのディレクトリは「 /var/spool/postfix/」です。

メールキューの確認コマンド

$ mailq

キューにたまったメールの再送信

$ postfix flush

メールキューの消去はpostsuperコマンドを使います。キューIDはmailqコマンドで確認できます。

postsuper -d キューID

メールログ

メールログは /var/log/maillogに置かれます。

# less /var/log/maillog

maillogの中身

/var/log/maillogの中身

このようにpostfixがメールをどのように処理しているのかその過程を見ることができます。上の例ではメール送信に失敗していますがその時の処理過程がログを見るとわかります。

MEMO
qmgr(キューマネージャ)はメール配送を行う中心のプログラムです。SMTPコマンドを使ってメール送信を行うとメールは/var/spool/postfix/ディレクトリにある複数のキューに振り分けられます。qmgrはどのキュー配送の管理を行っています。まずはじめに送信するメールはincomingキューに入り、その後qmgrがactiveに配送、送信できない場合はdeferredやbounceなどに配送されていきます。

コメントを残す

メールアドレスが公開されることはありません。