OP25B(Outbound Port 25 Blocking)対策

最終更新日: 2017.02.18

<<トップページ <<新着情報 <<リンク集 <<サイト内検索 <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

メール送信時に使用するプロバイダがOP25Bを導入している場合、自宅サーバーにおいては以下の影響がある。
各プロバイダのOP25B導入状況

・自宅サーバー接続プロバイダがOP25Bを導入している場合@・・・サーバーから外部宛にメール送信できない(例:root宛メールを外部に転送できない)・・・メールサーバー側対処要
・自宅サーバー接続プロバイダがOP25Bを導入している場合A・・・内部から自宅メールサーバーのメールアドレスでメール送信できない・・・メールサーバー側対処要
・外部でメール送信時に使用するプロバイダがOP25Bを導入している場合・・・外部から自宅メールサーバーのメールアドレスでメール送信できない・・・メールクライアント側対処要

ここでは、メール送信時に使用するプロバイダでOP25Bによる影響を受けるか確認し、影響を受ける場合はOP25B対策を実施する。


■OP25B影響有無確認

メール送信時に使用するプロバイダでOP25Bの影響を受けるか確認するため、外部のメールサーバーへSMTP接続できるかチェックする。
ここでは、GmailのメールサーバーへtelnetコマンドでSMTP接続を行ってみて、接続可否でOP25Bの影響を受けるか確認する。
[root@centos ~]# dig gmail.com mx ← Gmailのメールサーバー名取得

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> gmail.com mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19342
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 13, ADDITIONAL: 16

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;gmail.com.                     IN      MX

;; ANSWER SECTION:
gmail.com.              3599    IN      MX      10 alt1.gmail-smtp-in.l.google.com. ← Gmailのメールサーバー名
gmail.com.              3599    IN      MX      5 gmail-smtp-in.l.google.com. ← Gmailのメールサーバー名
gmail.com.              3599    IN      MX      20 alt2.gmail-smtp-in.l.google.com. ← Gmailのメールサーバー名
gmail.com.              3599    IN      MX      30 alt3.gmail-smtp-in.l.google.com. ← Gmailのメールサーバー名
gmail.com.              3599    IN      MX      40 alt4.gmail-smtp-in.l.google.com. ← Gmailのメールサーバー名
・
・
・

[root@centos ~]# telnet alt4.gmail-smtp-in.l.google.com 25 ← GmailのメールサーバーへSMTP接続
※telnetコマンドがない場合は「yum -y install telnet」でインストールする

【接続成功=OP25Bの影響を受けない=OP25B対策不要の場合】
Trying 2607:f8b0:4002:c03::1b...
telnet: connect to address 2607:f8b0:4002:c03::1b: Connection refused
Trying 173.194.219.27...
Connected to alt4.gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP i206si1308648ywi.140 - gsmtp
quit ← quit応答(SMTP接続終了)
221 2.0.0 closing connection i206si1308648ywi.140 - gsmtp
Connection closed by foreign host.

【接続失敗=OP25Bの影響を受ける=OP25B対策要の場合】
Trying 2607:f8b0:4002:c03::1b...
telnet: connect to address 2607:f8b0:4002:c03::1b: Connection refused
Trying 173.194.219.27...
telnet: connect to address 173.194.219.27: Connection timed out

■メールサーバーのOP25B対策(Postfix編)

Gmailのメールサーバーから送信するメールはOP25Bの影響は受けないため、全ての送信メールをGmailを経由して送信するようにする。

(1)Postfix設定
[root@centos ~]# vi /etc/postfix/main.cf ← Postfix設定ファイル編集
以下を最終行へ追加
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt

(2)SMTP認証情報設定
[root@centos ~]# echo [smtp.gmail.com]:587 Gmailアドレス:Gmailパスワード > /etc/postfix/sasl_passwd ← SMTP認証情報設定

[root@centos ~]# chmod 640 /etc/postfix/sasl_passwd ← root以外参照できないようにパーミッション変更

[root@centos ~]# postmap /etc/postfix/sasl_passwd ← SMTP認証情報のデータベース化

(3)Postfix設定反映
[root@centos ~]# systemctl reload postfix ← Postfix設定反映※CentOS7の場合

[root@centos ~]# /etc/rc.d/init.d/postfix reload ← Postfix設定反映※CentOS6,5の場合


■メールサーバーのOP25B対策(sendmail編)

プロバイダのメールサーバーから送信するメールはOP25Bの影響は受けないため、全ての送信メールをプロバイダのメールサーバーを経由するようにする。
※なお、下記に示すOP25B対策は代表的な大手プロバイダでの対策例であり、プロバイダによっては別の対策が必要な場合もある

(1)sendmail設定
[root@centos ~]# yum -y install sendmail-cf ← sendmail-cfインストール

[root@centos ~]# vi /etc/mail/sendmail.mc ← sendmail設定ファイル編集
dnl define(`SMART_HOST', `smtp.your.provider')dnl
define(`SMART_HOST', `esmtp:[プロバイダのSMTPサーバー名]')dnl ← 追加(プロバイダのメールサーバーへメールを転送)
※プロバイダのSMTPサーバー名は各プロバイダのWebサイト等で確認
define(`ESMTP_MAILER_ARGS',`TCP $h 587') ← 追加(Submissionポートへ接続)
FEATURE(authinfo, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`authinfo') ← 追加(SMTP認証)

[root@centos ~]# m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ← sendmail.mcからsendmail.cfを作成

(2)SMTP認証情報設定
プロバイダのSMTPサーバーが対応している認証方式を調査する
[root@centos ~]# telnet プロバイダのSMTPサーバー名 25または587 ← プロバイダのSMTPサーバーへ接続
Trying XXX.XXX.XXX.XXX...
Connected to プロバイダのSMTPサーバー名 (XXX.XXX.XXX.XXX).
Escape character is '^]'.
220 プロバイダのSMTPサーバー名 ESMTP
ehlo localhost ← ehlo localhost応答
250-プロバイダのSMTPサーバー名
250-AUTH LOGIN CRAM-MD5 PLAIN ← プロバイダのSMTPサーバーが対応している認証方式
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
quit ← quit応答
221 プロバイダのSMTPサーバー名
Connection closed by foreign host.

[root@centos ~]# echo AuthInfo:SMTPサーバー名 \"U:ユーザー名\" \"P:パスワード\" \"M:認証方式\" > /etc/mail/authinfo ← SMTP認証設定
SMTPサーバー名・・・プロバイダのSMTPサーバー名
ユーザー名・・・プロバイダのメールアカウント名
パスワード・・・プロバイダのメールパスワード
認証方式・・・プロバイダのSMTPサーバーが対応している認証方式(例:LOGIN CRAM-MD5 PLAIN)

[root@centos ~]# chmod 640 /etc/mail/authinfo ← root以外参照できないようにパーミッション変更

[root@centos ~]# makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo ← authinfo.db作成

[root@centos ~]# chgrp smmsp /etc/mail/authinfo.db ← authinfo.db所有グループ変更

(3)送信元メールアドレス書き替え設定※自ドメインを取得している場合
送信元メールアドレスの@以降の部分の名前解決が外部から行えない場合、メール受信を拒否するメールサーバーもあるので、サーバーから送信するメールの送信元アドレスをxxxx@centos.centossrv.comからxxxx@centossrv.comに書き替える。
[root@centos ~]# vi /etc/mail/sendmail.mc ← sendmail設定ファイル編集
EXPOSED_USER(`root')dnl
↓
dnl EXPOSED_USER(`root')dnl ← 変更(送信元がrootの場合も書き替える)

dnl MASQUERADE_AS(`mydomain.com')dnl
MASQUERADE_AS(`centossrv.com')dnl ← 追加(送信元アドレスの@以降をドメイン名にする)

dnl FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_envelope)dnl ← 追加(エンベロープFromも書き替える)

[root@centos ~]# m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ← sendmail.mcからsendmail.cfを作成

(4)送信元メールアドレス書き替え設定※自ドメインを取得していない場合
送信元メールアドレスの@以降の部分の名前解決が外部から行えない場合、メール受信を拒否するメールサーバーもあるので、サーバーから送信するメールの送信元アドレスをプロバイダのメールアドレスに書き替える。
[root@centos ~]# vi /etc/mail/sendmail.mc ← sendmail設定ファイル編集
dnl FEATURE(masquerade_envelope)dnl
−−ローカル発信メールの送信元アドレスを書き替える設定追加(ここから)
FEATURE(masquerade_envelope)dnl
FEATURE(genericstable,DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`genericstable')
GENERICS_DOMAIN_FILE(MAIL_SETTINGS_DIR`genericsdomain')
FEATURE(`generics_entire_domain')
−−ローカル発信メールの送信元アドレスを書き替える設定追加(ここまで)

[root@centos ~]# m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ← sendmail.mcからsendmail.cfを作成

[root@centos ~]# echo localhost >> /etc/mail/genericsdomain ← 書き替え対象ホスト名を設定

[root@centos ~]# echo `hostname` >> /etc/mail/genericsdomain ← 書き替え対象ホスト名を設定

[root@centos ~]# echo root プロバイダのメールアドレス > /etc/mail/genericstable
 ← 送信元がrootの場合、送信元アドレスをプロバイダのメールアドレスに書き替える

[root@centos ~]# makemap hash /etc/mail/genericstable.db < /etc/mail/genericstable ← genericstable.db作成

[root@centos ~]# chgrp smmsp /etc/mail/genericstable.db ← genericstable.db所有グループ変更

(5)sendmail設定反映
[root@centos ~]# systemctl restart sendmail ← sendmail設定反映※CentOS7の場合
[root@centos ~]# /etc/rc.d/init.d/sendmail reload ← sendmail設定反映※CentOS6,5の場合

■メールサーバーのOP25B対策(qmail編)

プロバイダのメールサーバーから送信するメールはOP25Bの影響は受けないため、全ての送信メールをプロバイダのメールサーバーを経由するようにする。
※なお、下記に示すOP25B対策は代表的な大手プロバイダでの対策例であり、プロバイダによっては別の対策が必要な場合もある
[root@centos ~]# wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz ← qmailダウンロード

※wgetが固まってダウンロードできない場合は下記手順でダウンロード
[root@centos ~]# wget --no-passive-ftp ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz ← qmailダウンロード

[root@centos ~]# tar zxvf qmail-1.03.tar.gz ← qmail展開

[root@centos ~]# cd qmail-1.03 ← qmail展開先ディレクトリへ移動

[root@centos qmail-1.03]# wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz
 ← SMTP認証対応パッチダウンロード

[root@centos qmail-1.03]# wget http://tomclegg.net/qmail/qmail-remote-auth.patch ← 外部SMTP認証対応パッチダウンロード

[root@centos qmail-1.03]# tar zxvf qmail-smtpd-auth-0.31.tar.gz ← SMTP認証対応パッチ展開

[root@centos qmail-1.03]# /bin/mv qmail-smtpd-auth-0.31/* . ← SMTP認証対応パッチをqmail展開先ディレクトリへ移動

[root@centos qmail-1.03]# patch < auth.patch ← SMTP認証対応パッチ施行
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c

[root@centos qmail-1.03]# patch < qmail-remote-auth.patch ← 外部SMTP認証対応パッチ施行
patching file qmail-remote.c
patching file Makefile
Hunk #1 succeeded at 1441 (offset -4 lines).

[root@centos qmail-1.03]# vi error.h ← error.h編集
extern int errno;
↓
#include<errno.h> ← 変更

上記は以下のようなエラーメッセージを出力してインストールが失敗してしまうことの対処
/lib/libc.so.6: could not read symbols: 不正な値です
collect2: ld はステータス 1 で終了しました
make: *** [auto-str] エラー 1

[root@centos qmail-1.03]# make qmail-remote ← qmail-remoteのみコンパイル

[root@centos qmail-1.03]# install -m 711 qmail-remote /var/qmail/bin/qmail-remote ← qmail-remoteのみインストール

[root@centos qmail-1.03]# cd ← qmail展開先ディレクトリを抜ける

[root@centos ~]# rm -rf qmail-1.03 ← qmail展開先ディレクトリ削除

[root@centos ~]# rm -f qmail-1.03.tar.gz ← ダウンロードしたqmail削除

[root@centos ~]# echo :SMTPサーバー名:587 ユーザー名 パスワード > /var/qmail/control/smtproutes ← SMTP認証情報設定
SMTPサーバー名・・・プロバイダのSMTPサーバー名
ユーザー名・・・プロバイダのメールアカウント名
パスワード・・・プロバイダのメールパスワード

■メールクライアントのOP25B対策

メールソフトの設定で、メール送信時に使用するポートをSMTP(25番ポート)から別のポート番号に変更すればよいため、プロバイダ側ではサブミッションポート(587番ポート)の使用を推奨しているが、当サイトではセキュリティ上の理由からSMTP認証を必須としており、かつ、SMTP認証情報の盗み見対策としてTLSによる暗号化通信を必須としているため、メール送信時に使用するポートはSMTPS(465番ポート)としている。これにより自動的にOP25B対策となっているため、対処は不要。

【参考】
メールサーバー間通信内容暗号化(OpenSSL+Postfix+Dovecot)



▲このページのトップへ戻る

LPIロゴ Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします