本日も乙

ただの自己満足な備忘録。

Postfixをインストールしてメール送信してみる

Linuxでメール送信する場合、mailコマンドやsendmailコマンドから送るかと思います。 また、PHPなどでお問合せフォームを作成していて、お問合せ完了後にメール送信することもあります。 これらのメール送信する機能のことをMTA(Message Transfer Agent)といいます。 メール送信するだけならLinuxをインストールした時に、一緒にインストールされてMTAをそのまま使えば良いかと思いますが、インストールされていなかったり、空メールを受信してプログラムを実行したいなどの場合には、MTAをインストール、設定しなければなりません。

今、使われているMTAは、sendmail, qmail, postfix などがあります。 sendmailqmailは昔からリリースされており、使っている人も多いかと思いますが、設定がとても複雑で初めてメールサーバを構築する人にとってはハードルが高すぎます。 それに比べて、Postfixは比較的最近開発されたMTAでで、簡単な設定で使うことができます。

それぞれの比較はこちらの記事が参考になります。 sendmail、qmail、Postfixのそれぞれの良さと違い | メール配信/メールセキュリティのHDE技術陣によるコラム

今日は、Postfixをインストールして実際にメール送信してみます。

Postfixのインストール

まずは、Postfixがインストールされているか確認してみましょう。

$ yum list installed | grep postfix
postfix.x86_64        2:2.6.6-2.2.el6_1 @anaconda-CentOS-201112091719.x86_64/6.2

postfix・・・」 が表示されればPostfixがインストールされていることになります。 もし、表示されていなければインストールされていないので、yumでインストールすることになりますが、 先にsendmail等がインストールされていて、動いているかもしれないのでそちらを止めます。

$ sudo service sendmail stop
sendmail を停止中: [ OK ]

Postfixをインストールします。

$ sudo yum install postfix

インストールしたPostfixのバージョンを確認してみましょう。

$ postconf  mail_version
mail_version = 2.6.6

MTA切り替え設定、自動起動の設定

Postfixのインストールが完了したら、Linux上で使用しているMTAをPostfixに設定します。

$ sudo alternatives --config mta
2 プログラムがあり 'mta' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2 <= 2を入力してEnterキーを押す

2を入力してPostfixをデフォルトのMTAに設定します。 もう一度、alternativesコマンドで設定すると、選択が変わっているのが分かります。

alternatives --config mta

2 プログラムがあり 'mta' を提供します。

  選択       コマンド
-----------------------------------------------
*  1           /usr/sbin/sendmail.sendmail
 + 2           /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

次に自動起動などの設定を行なっていきます。 sendmail等が入っている人は、自動起動を解除します。

$ sudo chkconfig sendmail off
$ chkconfig --list sendmail
sendmail        0:off   1:off   2:off   3:off   4:off   5:off   6:off
$ sudo chkconfig --add postfix
$ sudo chkconfig postfix on
$ chkconfig --list postfix
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off

Postfixの設定

Postfixでは主に、/etc/postfix 以下にあるファイルを編集します。 ここでは、ただ送信するだけなので設定をしません(次回以降、設定していきます)。

メール送信テスト

実際にメール送信してみます。 ここではメール受信にsendmailコマンドを使います。

$ sendmail foo@foo.com   <= 送りたいメールアドレスを指定します
From:bar@bar.com         <= 差出人(From)ヘッダを指定します
To:foo@foo.com  <= 宛先(To)ヘッダを指定します
Subject:テスト送信        <= 件名(Subject)ヘッダを指定します

テスト送信してみました。    <= 内容(Body)を記入します

.                        <= Bodyの入力が終わったら「.」を入力します

メールアドレス(foo@foo.com)にメールが送信されているか確認してみてください。 来ていない人は迷惑メールフォルダに振り分けられているかと思いますのでそちらも確認してみてください。

また、実際にメールが送信されたかログからも確認してみます。

$ sudo tail /var/log/maillog
Aug 14 14:09:35 localhost postfix/pickup[2241]: 3FC8481FF6: uid=500 from=
Aug 14 14:09:35 localhost postfix/cleanup[2273]: 3FC8481FF6: message-id=<20130814050935.3FC8481FF6@localhost.localdomain>
Aug 14 14:09:35 localhost postfix/qmgr[1775]: 3FC8481FF6: from=, size=348, nrcpt=1 (queue active)
Aug 14 14:09:37 localhost postfix/smtp[2275]: 3FC8481FF6: to=, relay=xxxxxxxx.com[xxx.xxx.xxx.xxx]:25, delay=31, delays=29/0.04/1.4/0.94, dsn=2.0.0, status=sent (250 2.0.0 OK 1376456977 zo6si9556328pac.83 - gsmtp)
Aug 14 14:09:37 localhost postfix/qmgr[1775]: 3FC8481FF6: removed

「status=sent」になっていれば、メールは送れています。 送れていない場合は、「status=bounced」(送信できない)、「status=deferred」(送信できないので後で再送する)になっていると思いますので、ログから原因を探ってください。

最後に

Postfixをインストールしてメール送信をしてみました。 Postfixを使って、メールのリレー設定や、空メールなどのプログラム実行、複数メールアドレスの受信(Virtual domain)も行えますので少しずつ記事を載せていければと思います。