Xserver VPSでWordPressを運用していますので、問い合わせフォーム等のメールアドレスも独自ドメイン宛で運用したいと思います。但し、日常使用するメールアドレスではありませんので、独自ドメイン宛のメールを日常使用しているメールアドレスに転送する事を目的として設定を行いました。
設定の方針
MTA (Mail Transfer Agent)はPostfixを利用します。設定に際しては以下のサイトの情報を参考にさせて頂きました。
基本的な流れはこちらに従い、Xserver + KUSANAGI環境で必要となった修正を反映させています。また、KUSANAGIインストール時にLet’s Encryptの設定も完了している前提で進めていきます。詳しくは【Xserver VPS】KUSANAGI & WordPressのセットアップを参照ください。
この記事は以下の前提で記載しています。
- 独自ドメイン:mydomain.com
- 転送先メールアドレス:myname@forwarded.com
- メールサーバ:mail.mydomain.com
- サーバIPアドレス:my_ip_address
DNSの設定
mydomain.com宛に送付されたメールの名前解決をできるようにDNSにAレコードとMXレコードを登録します。
Xserver VPS管理画面にアクセスし、【DNS設定】→【DNSレコード設定の追加】に進みます。
Aレコードにmail.mydomain.com→my_ip_addressへの名前解決、MXレコードにmydomain.com→mail.mydomain.comの登録を行います。
Postfixのセットアップ
Postfixのインストール
Xserver × KUSANAGI環境ではPostfixはインストール済みですが、念のために以下のコマンドで確認しておきます。
# yum list installed | grep postfix
postfix.x86_64 2:3.5.8-4.el8 @baseos
インストールされていない場合には、# yum install postfix
でインストールしておきます。
Postfixの設定
Postfixの設定ファイルは/etc/postfix
フォルダに入っています。今回はmain.cf
とmaster.cf
を編集していきます。
main.cfの編集
ホスト名、ドメイン名、インターフェースの設定
エディタでmain.cfを開き、以下の設定を記述します(ここではviを使用します)。
# vi /etc/postfix/main.cf
myhostname = mail.mydomain.com
mydomain = mydomain.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
SMTPクライアントの暗号通信(TLS)設定
このメールサーバから他のメールサーバにメールを送信する際の暗号通信設定を行います。main.cf
に以下設定を記載していきます。
smtp_tls_security_level=may
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
SMTPサーバの暗号通信(TLS)設定
続いて、このメールサーバがクライアントからメールを受信する場合の暗号通信設定を行います。main.cf
に以下を記載していきます。
smtpd_use_tls = yes
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
smtpd_tls_key_file = /etc/pki/tls/private/privkey.key
master.cfの編集
続いてmaster.cf
の設定を行います。サンプル設定の中から、以下の行の行頭の#を外して有効化します。
smtp inet n - n - - smtpd
smtpd pass - - n - - smtpd
-o smtpd_tls_wrappermode=yes
postfix設定の反映
postfixを再起動して設定を反映させます。
# systemctl restart postfix
Aliasの設定
このメールサーバは転送用なので、メールアドレスのためだけのユーザ作成は不要です。Aliasでmyname@forwarded.comに転送する設定を行っていきます。今回はroot宛のメールも転送するように設定しておきます。
# vi /etc/aliases
admin: myname@forwarded.com
root: myname@forawrded.com
Alias設定を読み込みます。
# newaliases
firewalldの設定変更
SMTP関連の通信が通るようにfirewalldにSMTP/SMTPSの通信を許可します。【Xserver VPS】ファイアウォールの設定の設定が終わっている前提です。
# firewall-cmd --add-service=smtp --zone=public --permanent
success
# firewall-cmd --add-service=smtps --zone=public --permanent
success
# firewall-cmd --reload
success
テスト
メールを送信してみる
上記で設定は完了しているはずなので、テストをしてみます。以下でログを表示しながら、外部からadmin@mydomain.comにメールを送付してみます。
# tail -f /var/log/maillog
….。何も起こりません。
原因を切り分ける為に、サーバからmailコマンドでadmin@mydomain.comにメールを送付してみると、今度はログにメールを受信して転送したと表示されます。転送先のアドレスにもメールが届いています。
となると、外部からサーバへのアクセス周りが怪しいね、ということで外部からnmapしてみます。
- Local -
$ sudo nmap -v mydomain.com
すると、SMTP (25番)ポートが開いていません。SMTPS(465番)も空いていません。
firewall-cmdコマンドでsmtp & smtpsを削除したり追加したりを繰り返してみましたが、やはり状況変わらずです。ここで、数時間は悩みました。【Xserver VPS 25番ポート】とかでも検索してみたりしましたが、思い当たるものは無く、一旦諦めました。
その後、別の作業でVPS管理パネルを見ていたら、ふと気づきました。【接続許可ポート】の設定。ここで【メール】を許可すると無事に送信できました!どうやら、Xserver VPSではfirewalld以前にポート制限をしている様子ですね。
ここで【メール】を許可すると、25/110/143/465/587/993/995番ポートが解放されますので、必要ないポートはfireawalldでブロックしておきます。(上記設定のままでOKですね)
今後の課題
ひとまずPostfixの設定はできましたが、SMTP(25番)ポートを開けっ放しで良いのか。587番開けようとしましたが、上手く行っていないので、このあたりのセキュリティ対策は今後TLSやらSASLやらの勉強してトライしてみたいと思います。
ということで、現時点ではfirewalldでsmtp & smtpsサービスは削除しておくこととしました。
今回は以上です。
コメント