2020年8月20日木曜日

OP25B環境でメール送信できるようにPostfixを構築する

OP25B (Outbound Port 25 Blocking) とは、ウイルスやスパムなどで外部に大量のメール送信をすることを防ぐことを目的として、外部との25番ポート (SMTP) の通信を拒否する設定のことをいう。この設定は一般的な家庭向けのインターネットサービスプロバイダーでは標準で設定されており、解除することはできない。

OP25Bが有効となった環境においては、SMTPによるメール送信はできないが、サブミッションポートと呼ばれる587番ポートを使ったメール送信を行うことができる。サブミッションポートを使ったメール送信では、プロトコル自体はSMTPが用いられるが、SMTP AUTHによる認証が必要となる。

今回、Postfixにてサブミッションポートを使ったメール送信設定を実施した

環境

  • OS : CentOS 8

Postfixのインストール

CentOS 8は標準でPostfixがインストールされていないのでインストールを行う。同時に、SMTP AUTHに必要となる「cyrus-sasl」関連のパッケージと、メール送信テストに使える「mailx」パッケージを導入しておく。

# dnf install postfix -y
# dnf install cyrus-sasl cyrus-sasl-plain -y
# dnf install mailx -y

Postfixの設定

1. Postfixのmain.cfを修正

Postfixインストール後、「/etc/postfix/main.c」に対して以下設定修正・追加を行う。メールのリレー先サーバは、プロバイダーの情報を参照して適切なFQDNを設定すること。なお、FQDNを[]を囲んでいるが、これはDNSに対してMXレコードの名前解決をせず、AレコードのIPアドレスにて名前解決を行う設定となる。今回のようにメール送信にプロバイダーのメールサーバを使用する場合は、原則[]で囲んでおけば問題なさそうだ。

# 受信許可ネットワークの設定
mynetworks = 127.0.0.0/8, 192.168.0.0/16

# 受付インタフェースを修正
inet_interfaces = all
inet_protocols = ipv4

# メールのリレー先サーバを指定
relayhost = [<メールサーバのFQDN>]:587

# SMTP認証設定 (最下行に追加)
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_password
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain,login

2. SMTP AUTH用のパスワードファイルを作成

SMTP AUTHはユーザ情報とパスワードが必要となるので、「/etc/postfix/smtp_password」というファイルを作成し、以下構文で設定を行う。

[<メールサーバのFQDN>]:587 <ユーザ名>:<パスワード>

以下記述例となる。

# vi /etc/postfix/smtp_password
[smtp.example.com]:587 USERNAME@example.com:PASSWORD

パスワード情報が含まれるため、rootのみ読み書きできるように権限設定を行ったのち、postmapコマンドでhash化したDBファイルを作成する。

# chmod 600 /etc/postfix/smtp_password
# postmap /etc/postfix/smtp_password
# ls -l /etc/postfix/smtp_password*
-rw------- 1 root root    58  8月 16 06:12 /etc/postfix/smtp_password
-rw------- 1 root root 12288  8月 16 06:12 /etc/postfix/smtp_password.db

3. Postfixを起動

最後にPostfixを起動させ、ステータスでエラーが発生していなければ、設定は成功となる。

# systemctl start postfix
# systemctl enable postfix
# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor pre>
   Active: active (running) since Sun 2020-08-16 05:48:12 JST; 27s ago
 Main PID: 23119 (master)
    Tasks: 3 (limit: 11091)
   Memory: 4.7M
   CGroup: /system.slice/postfix.service
           tq23119 /usr/libexec/postfix/master -w
           tq23120 pickup -l -t unix -u
           mq23121 qmgr -l -t unix -u

 8月 16 05:48:11 t3022cent systemd[1]: Starting Postfix Mail Transport Agent...
 8月 16 05:48:12 t3022cent postfix/master[23119]: daemon started -- version 3.3>
 8月 16 05:48:12 t3022cent systemd[1]: Started Postfix Mail Transport Agent.

動作確認

動作確認のためmailコマンドでメール送信をしてみよう。以下のように、-SオプションでPostfixを導入したサーバをメールサーバとして指定し、25番ポートを使ってメールが転送され、Gmailなどの外部のメールアドレスでメール受信できれば成功となる。

# echo "Test message" | mail -S smtp://<Postfixを導入したサーバのIPアドレス>:25 -s "Subject : Test mail" <送信先メールアドレス>

0 件のコメント:

コメントを投稿

人気の投稿