【Xserver VPS × KUSANAGI】メールサーバ(Postfix)の設定

Xserver VPS

Xserver VPSでWordPressを運用していますので、問い合わせフォーム等のメールアドレスも独自ドメイン宛で運用したいと思います。但し、日常使用するメールアドレスではありませんので、独自ドメイン宛のメールを日常使用しているメールアドレスに転送する事を目的として設定を行いました。

設定の方針

MTA (Mail Transfer Agent)はPostfixを利用します。設定に際しては以下のサイトの情報を参考にさせて頂きました。

CentOS 7 に Postfix で転送メールサーバーを構築する手順 |
WEBシステム開発のノウハウを蓄積・共有するウェブサイトです。 Ruby, PHP, Java, Apache, nginx, MySQL, Vagrant などの構築方法について詳しく解説します。

基本的な流れはこちらに従い、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レコード設定の追加】に進みます。

Xserver VPS - DNS Setting page, highlighting "Add DNS Record Setting" button.

Aレコードにmail.mydomain.com→my_ip_addressへの名前解決、MXレコードにmydomain.com→mail.mydomain.comの登録を行います。

Xserver VPS - DNS Setting page, showing example input for A record and MX record.
MXレコード

Mail Exchangeレコード。この例では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.cfmaster.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サービスは削除しておくこととしました。

今回は以上です。

コメント

タイトルとURLをコピーしました