はじめに
はじめに
ウェブサーバーは自分でCentOS + Apacheなどをインストールして構築・管理・運用を行っていますが、メール機能を同じサーバーに入れると、添付ファイルのウイスルチェックのためにClamdを入れるとCPUとメモリが大量消費しコストが上がるし、スパムチェックの定義などを日々更新したり、ブラックリストなどの管理も大変なので、メールサーバーは既存のレンタルサーバーを利用しています。
私はコスパが良い『さくらのメールボックス』を利用しています。
年額一括払いしか出来ませんが、年額1048円(税込)で月換算すると87円(税込)と格安です。
格安ですが、ウイルスチェックもあるし迷惑メールフィルタもあるし機能も充実しています。
また、ウェブサイト構築の発注があっても、同時にメールサーバーの構築と運用管理の依頼まではあまり来ないのが現状です。
しかし、ウェブサイトのPHPから問い合わせフォームの受付完了メールや、会員サイトの登録完了メールなどメール送信はけっこう頻繁に発生します。
そのままウェブサーバー内のPostfixからユーザーのメールサーバーに送信してもいいのですが、なりすましメールと勘違いされて拒否される事がよくあります。
なので、ウェブサイトのドメインのメールサーバーが別な場合は、正規のメールサーバーにSMTP認証して、中継送信してもらう方がメール到着率も上がるので、今回Postfixから別メールサーバーにSMTP認証してメールを中継送信させる方法をやりました。
サーバー環境
サーバー環境は下記の通りです。
CentOS 7.5.1804 (Core)
Postfix 3.5.8
ちょっと古い。
main.cfの編集
main.cfの説明
方法としてはsender_dependent_default_transport_mapsとsender_dependent_relayhost_mapsがあるみたいです。
今回は「smtp_sender_dependent_authentication」で送信アドレスごとにSMTP認証を行うか指定します。
「sender_dependent_relayhost_maps」で送信アドレスのドメイン毎に中継先のメールサーバーを指定します。
中継してもらうためのSMTP認証情報を「smtp_sasl_password_maps」で指定してあげます。
main.cfの内容
main.cfの一番下に下記を追記してあげます。
[root@sv01 ~]# vi /etc/postfix/main.cf
# 送信アドレス毎に認証
smtp_sender_dependent_authentication = yes
# 送信アドレスのドメインごとの中継先メールサーバーの設定ファイル
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
# TLSを行うか
smtp_use_tls = yes
# SASL認証をON
smtp_sasl_auth_enable = yes
# SASL認証の認証情報ファイル
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# SMTP側のセキュリティオプション
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
# SMTP側 SASL認証方法
smtp_sasl_mechanism_filter = cram-md5, plain, login
sender_relayの作成
sender_relayの説明
送信ドメイン毎に中継先メールサーバーを振り分けてくれます。
ドメイン名の頭に@を付ける。
メールサーバー名は括弧[]に入れる。
SMTPポート番号をコロンの後に書く。
sender_relayの内容
今回は例として送信アドレスを「info@testdomain.com」と「support@demodemo.com」と仮定して書いています。
[root@sv01 ~]# vi /etc/postfix/sender_relay
@testdomain.com [mail.testdomain.com]:587
@demodemo.com [smtp.demodemo.com]:587
sender_relayのDBハッシュ化
作成したsender_relayはこのままのテキストファイルだとPostfixさんが読み込めないので、postmapコマンドでDBハッシュ化してあげます。
[root@sv01 ~]# postmap /etc/postfix/sender_relay
コマンド実行後の結果は表示されませんので、lsコマンドでsender_relay.dbが作成されているか確認しましょう。
sasl_passwdの作成
sasl_passwdの説明
中継先メールサーバーに送るSMTP認証情報(メール送信のIDパス)を設定します。
送信アドレス毎に1行づつ書いてあげます。
sasl_passwdの内容
本作業をする前に、必ず中継先メールサーバー側で送信アドレスの作成を行って下さいね。
[root@sv01 ~]# vi /etc/postfix/sasl_passwd
[mail.testdomain.com]:587 info@testdomain.com:Mail999Pass
[smtp.demodemo.com]:587 support@demodemo.com:Password
sasl_passwdのDBハッシュ化
sender_relayと同じ様に、postmapコマンドでDBハッシュ化してあげます。
[root@sv01 ~]# postmap /etc/postfix/sasl_passwd
コマンド実行後の結果は表示されませんので、lsコマンドでsasl_passwd.dbが作成されているか確認しましょう。
postfixの再起動
これまでの設定を反映させるためPostfixを再起動させます。
systemctl restart postfix
確認
うまくできたか確認のため設定したinfo@testdomain.comからToUser@gmail.comにメール送信してみましょう。
[root@sv01 ~]# echo "test" |mail -s "test mail" -r info@testdomain.com ToUser@gmail.com
メールログを見てみましょう。
Mar 3 14:58:10 sv01 postfix/pickup[15934]: E392C6050A: uid=0 from=
Mar 3 14:58:10 sv01 postfix/cleanup[21184]: E392C6050A: message-id=<633058f2.uvMKnWbopuKhUDst%info@testdomain.com>
Mar 3 14:58:10 sv01 postfix/qmgr[11255]: E392C6050A: from=, size=454, nrcpt=1 (queue active)
Mar 3 14:58:11 sv01 postfix/smtp[21187]: Trusted TLS connection established to mail.testdomain.com[111.222.111.222]:587: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Mar 3 14:58:11 sv01 postfix/smtp[21187]: E392C6050A: to=, relay=mail.testdomain.com[111.222.111.222]:587, delay=0.32, delays=0.04/0.03/0.22/0.04, dsn=2.0.0, status=sent (250 2.0.0 2288wBBD010639 Message accepted for delivery)
Mar 3 14:58:11 sv01 postfix/qmgr[11255]: E392C6050A: removed
5行目に「relay=mail.testdomain.com」と外部の中継先メールサーバーに行き「status=sent」と返答がありましたね。
後片付け
sender_relayとsasl_passwdはDBハッシュ化された後は不要なので削除しておいた方がいいかもしれません。
sasl_passwdはメールパスワードが平文で書かれているので、他人がrootでログインして見る可能性があるなら削除しておいた方がいいですね。
参考ページ
下記ページを参考にさせて頂きました。
https://fsck.jp/?p=308
https://qiita.com/softark/items/255c44499cbc247655bc
余談
Postfix+Dovecot導入と合わせてウイルス・セキュリティ対策としてClamdとAmavisdを入れましたが、ClamdとAmavisdがものすごいメモリを食っていて、物理メモリ2GBマシンではキツイ構成です。
メモリ空き容量を見るといつも
[redadmin@sv01 ~]$ free -m
total used free shared buff/cache available
Mem: 1998 1309 280 0 409 512
Swap: 4095 1856 2239
とギリギリな感じで、メール専用サーバーなのでまだhttpdとMySQLはPostfixAdminでしか利用していないですが、ブログやHPを収容して稼働させるには心もとない空き容量です。
何か考えねば・・・。
コメント