Saba note

醜悪コード Ugly hacks ITものづくり

CentOS7で送信メールサーバーを設定する

Postfixの設定

インストール

yum -y install postfix

2017-09-25時点では最新のpostfix-2.10.1-6.el7.x86_64がイントールされると思う。(あるいは最近のサービスだったらすでにされているかも)
/etc/postfix/main.cfを設定します。

cd /etc/postfix/
cp -p main.cf main.cf.org
vi main.cf

実際ここでmain.cfに何も設定しなくてもlocalhostであれば、メールが送信できるようになっている筈です。テストサーバーとか開発サーバーとかでPHPのmb_sendmail()あたりをつかうのであれば充分かと思います。

systemctl start postfix.service

とはいえ、最近は迷惑メール云々で非常にうるさいので、ドメインとかtxtレコードにいろいろ設定しないとダメかも。(これはまた別項で)

mailxをインストールしておく。

コマンドラインでメールの送信が確認できるので便利

yum install -y mailx

メール送信する

mail user@example.com
Subject: sendmail test
送信内容の本文を書きます。
.
EOT

mailコマンドの後にメールアドレスを書いて、subjectとできてきたらタイトルを書いて、続けて本文を書いて、最後にピリオド(.)+Enterで送信されます。EOTが出たら成功。
あるいは、パイプ使って

echo "送信内容の本文を書きます。" | mail -s "sendmail test" user@example.com

でも送信できます。

ログも普通のmaillogに書き込まれるので確認。statusが250で成功です。

tail /var/log/maillog

Sep 25 10:41:45 butan postfix/smtp[3167]: 034561933: to=<user@example.com>, relay=aspmx.l.google.com[108.xxx.xxx.xxx]:25, delay=1.1, delays=0.03/0.01/0.65/0.44, dsn=2.0.0, status=sent (250 2.0.0 OK 1506303705 p190si3543823pga.766 - gsmtp)
Sep 25 10:41:45 hostname postfix/qmgr[811]: 0333419311: removed

Postfixでサブミッションポート(587)を有効にする

デフォルトのポート25ではなくサブミッションポート(587)を有効にするには、/etc/postfix/master.cf ファイル内の

#submission inet n       -       n       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

の部分を

submission inet n       -       n       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
と変更します。

エージェントの確認

CentOS7はおそらく殆ど大丈夫だと思うけど、時々デフォルトでsendmailが送信メールサーバーのエージェントに設定されているので要確認。alternatives –config mtaで確認できます。

alternatives --config mta
There is 1 program that provides 'mta'.
  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.postfix

こんな風になっていたら問題なし。

自動起動の設定

サーバー再起動の際にも自動的にpostfixが起動する設定

systemctl enable postfix.service

あんまりないけど、自動起動を停止するときはこっち。

systemctl disable postfix.service

ちゃんと設定できたか確認

systemctl list-unit-files -t service

と、なっていますがかなり長いリストになっているので個別に確認した方がいい。

systemctl is-enabled postfix.service

起動・再起動・停止・ステータス

systemctl start postfix.service
systemctl stop postfix.service
systemctl restart postfix.service
systemctl status postfix.service

Laravelのtinkerでテスト(おまけ)

php artisan tinker
Psy Shell v0.8.11 (PHP 7.1.7 — cli) by Justin Hileman
>>> Mail::raw('test mail',function($message) {$message->to('user@example.com')->subject('sendmail test');});

ログをみるとちゃんと送信された。

Sep 25 11:18:01 hostname postfix/smtpd[3480]: connect from localhost[127.0.0.1]
Sep 25 11:18:01 hostname postfix/smtpd[3480]: DE26C1999: client=localhost[127.0.0.1]
Sep 25 11:18:01 hostname postfix/cleanup[3482]: DE26C1999: message-id=<727e92wera575ad3aasd1db3ab9f4c1c@swift.generated>
Sep 25 11:18:01 hostname postfix/qmgr[3464]: DE26C1999: from=<hello@example.com>, size=483, nrcpt=1 (queue active)
Sep 25 11:18:01 hostname postfix/smtpd[3480]: disconnect from localhost[127.0.0.1]
Sep 25 11:18:01 hostname postfix/smtp[3483]: connect to aspmx.l.google.com[2304:4800:4008:c00::1a]:25: Network is unreachable
Sep 25 11:18:02 hostname postfix/smtp[3483]: DE26C1999: to=<user@example.com>, relay=aspmx.l.google.com[108.177.97.27]:25, delay=0.84, delays=0.05/0.01/0.35/0.42, dsn=2.0.0, status=sent (250 2.0.0 OK 1506305882 t10si3395911plh.277 - gsmtp)
Sep 25 11:18:02 hostname postfix/qmgr[3464]: DE26C1999: removed

CentOS7の環境にメールサーバを構築する
SMTP-AUTHとは

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です