自宅のCentOS7サーバからpostfixを使ってメール送信するまでの構築を行った時の手順を紹介します。

postfixをインストールする

CentOS7をインストールしたら標準でインストールと有効化が行われていましたので、その場合は必要ないですが未インストールの場合はyum等でインストールを行います。

以下のコマンドでpostfixが導入されているかを確認できます。

$ systemctl status postfix
postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
Active: active (running) since 土 2015-05-09 19:26:38 JST; 1h 9min ago
...

$ alternatives --config mta
1 プログラムがあり 'mta' を提供します。
 選択 コマンド
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.postfix

SMTP接続先とSASL認証の設定

ISPがOP25B対策をしている場合はそのままでは送信できないため認証設定が必要です。sendmailコマンドを実行するとプロバイダが接続拒否を行い「Connection refused」とログに出力されメール送信に失敗します。

ISPとの契約時に払いだされたドメイン、アカウント、パスワードを設定してSMTPでSASL認証します。

$ vi /etc/postfix/main.cf
# 以下を追加
relayhost = [ISPのSMTPサーバのホスト名]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/isp_auth
smtp_sasl_security_options = noanonymous

$ vi /etc/postfix/isp_auth
[ISPのSMTPサーバのホスト名]:587 account:password

$ postmap /etc/postfix/isp_auth

$ systemctl restart postfix

上記はSASL認証の設定を行っていますが、認証設定を行わずSMTPの接続先だけ設定した状態だとログに「Relaying denied. Proper authentication required. (in reply to RCPT TO command))」と出力されて送信に失敗します。

SASL認証用のライブラリをインストール

SASL認証の設定を入れてメールを送信してもライブラリがインストールされておらずログに「warning: SASL authentication failure: No worthy mechs found」と表示され送信に失敗します。

そのためSASL用のライブラリをインストールする必要があります。

$ yum -y install cyrus-sasl-plain cyrus-sasl-md5

メール送信確認

以上の設定で自分の契約しているプロバイダではメール送信ができるようになりました。以下のコマンドでメールの送信確認ができます。

$ sendmail toAddr@example.com
From:fromAddr@example.com
To:toAddr@example.com
Subject:This is test mail
 
This is test mail.
 
.