postfixはメール送信用メールサーバー構築ソフト
メール送信を行うプロトコルは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を押します。
main.cfの設定 〜 postfixの設定1
postfixは/etc/postfix/main.cfが設定ファイルです。多くの設定項目がありますが、必要最低限の項目を編集すれば動作します。
設定項目一覧
- queue_directory:キューの置き場 例:/var/spool/postfix
- command_directory = /usr/sbin
- daemon_directory = /usr/libexec/postfix
- data_directory = /var/lib/postfix
- mail_owner = postfix
- myhostname:サーバーのFQDN 例:mail.example.com
- mydomain:所属するドメイン名 例:example.com
- myorigin:通常はmydomainを指定 例:example.com
- inet_interface:SMTP接続を受けるNICを指定 例:all
- mydestination:ローカル配送させるホスト名
- mynetworks:信頼するnetworkを登録、mydomainでない場合は中継:localhost, 127.0.0.1
- home_mailbox:メールボックス形式 例:Maildir/
main.cfファイルはたくさんの項目が書かれていて変更箇所がわかりにくいです。そこでデフォルト値と異なる部分だけ出力するコマンドpostconf -nを実行するとわかりやすいです。
postconf -n
postconf -n > new_main.cf としてファイルを打ち出すこともできる
メールの保存形式にはsendmailで用いられている一つのファイルをメールボックスとして全てのメールを書き込んで管理するMailBox形式とqmailで採用されている受信箱、送信箱などのディレクトリを作ってメールを振り分けて管理するMailDir形式があります。postfixでは両者とも利用することができます。
転送設定 /etc/aliasesの設定
転送設定はetc/aliasesにあるファイルで転送設定できます。
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
このようにpostfixがメールをどのように処理しているのかその過程を見ることができます。上の例ではメール送信に失敗していますがその時の処理過程がログを見るとわかります。