プロバイダのOP25Bに対応しよう!
ここでは、OP25B(Outbound Port 25 Blocking)対策について掲載しています。
※CentOS 7のサポートは2024年6月をもって終了していますが、旧コンテンツとしてこちらのページは残しておきます。
OP25B(Outbound Port 25 Blocking)とは…?
スパムメール対策として取り入れられたもので、通常メールを送信する際に使われるSMTPポート(TCP/25)の通信ををプロバイダがブロックし、迷惑メールなどの送信を防止するというものです。
OP25Bを導入しているプロバイダの一覧はこちら。
このOP25Bですが、自宅サーバを構築する上では少々やっかいなもので、サーバ側で対策をしてあげないとメールを送信できない可能性があります。
対策としては以下の2つ。
1つ目の方法は、通信を暗号化してしまう方法。
2つ目の方法は、OP25Bを導入しているプロバイダが用意しているSubmissionポートと呼ばれる代替ポート(TCP/587)を使う方法。
どちらも共通するのはメールの送信に使うポートを変えてしまうという点ですね。2つとも設定する必要はなく、どちらか片方を設定すればだいたい大丈夫です。
※ただし、うまくいかないこともあります…。
通信の暗号化を使用したOP25B対策 (オススメ!)
通信内容を暗号化し、通常SMTPポート(TCP/25)を使うところをSMTPSポート(TCP/465)を使ってメールの送信をするよう、サーバの設定を行います。
ここで暗号化されるのは、メールの送受信を行っている端末と現在構築しているメールサーバ間になります。メールサーバから先は暗号化の保証がありませんので、そこらへんは注意が必要です。
また、事前にSSLの設定を行っておく必要があります。
今回は、Let's Encryptを使って証明書を発行したものとして話を進めます。自己発行の証明書の場合は各自ファイル名等を読み替えてください。
Postfixの設定
設定ファイル(main)の最後尾に以下を追記します。
[root@co7 ~]# vi /etc/postfix/main.cf
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mhserv.info/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mhserv.info/privkey.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
さらに、以下の設定ファイル(master)を編集します。
[root@co7 ~]# vi /etc/postfix/master.cf
#smtps inet n - n - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
↓
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
Postfixの再起動
設定を反映するため、Postfixを再起動します。
[root@co7 ~]# systemctl restart postfix
Dovecotの設定
送信時だけでなく、受信時の通信も暗号化するよう、Dovecotの設定も変更します。
[root@co7 ~]# vi /etc/dovecot/conf.d/10-ssl.conf
#ssl = yes
↓
ssl = yes
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
↓
ssl_cert = </etc/letsencrypt/live/mhserv.info/fullchain.pem
ssl_key = </etc/letsencrypt/live/mhserv.info/privkey.pem
Postfixの再起動
設定を反映するため、Dovecotを再起動します。
[root@co7 ~]# systemctl restart dovecot
ファイアウォールの設定
サーバ - クライアント間で暗号化通信ができるよう、ファイアウォールの設定を行います。
[root@co7 ~]# firewall-cmd --permanent --add-service={smtps,imaps,pop3s}
success
[root@co7 ~]# firewall-cmd --reload
success
ルータのポートマッピング
暗号か通信用のポートマッピングを行います。
使用するポートは以下の通りです。
- ・SMTPS:465
- ・POPS:995
- ・IMAPS:993
Submissionポートを使用したOP25B対策
通常SMTPポート(TCP/25)を使うところをSubmissionポート(TCP/587)を使ってメールの送信をするよう、サーバの設定を行います。
Telnetのインストール
プロバイダ指定のメールサーバがどのような認証方式に対応しているか確認するためにTelnetを使用します。
まずは、Telnetが使えるようにインストールしましょう。
[root@co7 ~]# yum -y install telnet
インストール:
telnet.x86_64 1:0.17-66.el7
完了しました!
続いて、認証方式を確認します。
Telnetで接続後、太字のコマンドを実行し、"AUTH"の項目を確認してください。
[root@co7 ~]# telnet プロバイダ指定のSMTPサーバ 587
Trying XXX.XX.XXX.XXX... Connected to XXX.XX.XXX.XXX. Escape character is '^]'. 220 XXX.XX.XXX.XXX ESMTP ehlo localhost 250-XXX.XX.XXX.XXX 250-PIPELINING 250-SIZE 104857600 250-AUTH PLAIN LOGIN CRAM-MD5 250-ENHANCEDSTATUSCODES 250 8BITMIME quit 221 2.0.0 Bye Connection closed by foreign host.
サーバによって表示される内容が異なりますが、今回参考に使った例では認証方式として、PLAIN、LOGIN、CRAM-MD5が使用されていることが分かります。
Postfixの設定
Postfixの設定を変更します。
[root@co7 ~]# vi /etc/postfix/main.cf
#relayhost = $mydomain
↓
relayhost = [プロバイダ指定のSMTPサーバ]:587
最後尾に以下の設定を追記します。
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/ispinfo
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = PLAIN,LOGIN,CRAM-MD5(先に確認した認証方式)
MyDNSを利用している方は、リレーサーバにMyDNSの提供するサーバを指定することも可能です。プロバイダのSMTPサーバを指定してダメな場合はこちらを利用してみるのも良いと思います。
ただし、あくまで試験のような書き方をしているので、どのくらい続くか分かりませんが…。
認証情報の設定
プロバイダのSMTPサーバにログインするための認証情報を設定します。プロバイダから与えられたアカウント名、パスワード等を会員証などで確認し、設定します。
[root@co7 ~]# echo [プロバイダのSMTPサーバ]:587 プロバイダのメールアカウント:パスワード > /etc/postfix/ispinfo
[root@co7 ~]# chmod 640 /etc/postfix/ispinfo
[root@co7 ~]# postmap /etc/postfix/ispinfo
さらに、以下の設定ファイル(master)を編集します。
[root@co7 ~]# vi /etc/postfix/master.cf
#submission inet n - n - - smtpd
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
↓
submission inet n - n - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
Postfixの再起動
設定を反映するため、Postfixを再起動します。
[root@co7 ~]# systemctl restart postfix
ファイアウォールの設定
続いてファイアウォールの設定を行います。
SubmissionポートでSMTPサーバへアクセスできるよう、ファイアウォールで許可をしてあげます。
[root@co7 ~]# firewall-cmd --permanent --add-service=submission
success
[root@co7 ~]# firewall-cmd --reload
success
ルータのポートマッピング
Submission用のポートマッピングを行います。
使用するポートは以下の通りです。
- ・Submission:587
設定が終わったら、自分自身へのメール送受信、外部とのメール送受信のテストを行い、正しく動作するかを確認してください。
参考にしたサイト様
今回新しく登場したコマンド
[広告]
トップページ
CentOS 7
○準備
○仮想化準備(VMware)
○仮想化準備(Hyper-V)
○仮想化準備(Proxmox)
○基本操作
○導入
○セキュリティ対策
○Dynamic DNS
○NTPサーバ
○データベース
○WEBサーバ
○FTPサーバ
○メールサーバ
○DNSサーバ
○ブログシステム
○オンラインストレージ
○その他