なぜ587番と465番ポートで送るのですか
25番ポートは、メールサーバー同士がメールを受け渡すポートです。サーバーから受信側のメールサーバーへ直接送ると、IP の評価、逆引き DNS、送信量の管理まですべて自分で対応する必要があり、新しいサーバーの IP から送ったメールは迷惑メールフォルダに入りやすくなります。
587番と465番は、ログインしたユーザーがメールを預けるサブミッションポートです。メール配信サービスにユーザー名とパスワードでログインしてメールを預ければ、評価が管理された配信サーバーが代わりに届けてくれます。会員登録の確認、パスワードの再設定、注文通知のようなメールを受信トレイに確実に届ける、最も確かな方法です。
- 587番: 平文で接続したあと、STARTTLS で暗号化を開始します。ほとんどのサービスやプログラムが標準で使うポートです。
- 465番: 最初から TLS で暗号化して接続します。設定画面では SSL または SSL/TLS と表示されることが多いです。
メール配信サービスを選ぶ
メール配信サービスは、大きく2種類あります。1つはウェブサイトやアプリの通知メールを大量に送るトランザクションメールサービス、もう1つはすでに使っている会社のメールや個人のメールアカウントの SMTP 機能です。どちらの場合も、次の4つの情報を受け取っておけば設定の準備は完了です。
- SMTP サーバーのアドレス: たとえば smtp.example.com
- ポート: 587(STARTTLS)または465(SSL/TLS)
- ユーザー名: サービスが指定するユーザー名またはメールアドレス
- パスワード: サービスの SMTP 専用パスワードまたは API キー
送信量の多いネットショップやサービスなら、トランザクションメールサービスが送信記録、バウンス処理、配信停止の管理まで行ってくれるので便利です。通知が数通程度なら、メールアカウントの SMTP でも十分です。
サーバーから SMTP 接続を確認する
設定する前に、サーバーから配信サービスまで正常に接続できるかを確認します。下のコマンドは接続を確認するだけで、メールは送りません。
nc -vz smtp.example.com 587
openssl s_client -starttls smtp -connect smtp.example.com:587 -crlf -quiet
openssl s_client -connect smtp.example.com:465 -crlf -quiet1行目が succeeded か open を表示し、openssl のコマンドが220で始まるサーバーの応答メッセージを表示すれば準備完了です。Ctrl+C で抜けます。nc コマンドがない場合は、Ubuntu と Debian は apt install -y netcat-openbsd、AlmaLinux は dnf install -y nmap-ncat でインストールします。
Postfix を配信サービスにつなぐ
サーバーのプログラム、cron の通知、mail コマンドが送るメールを1か所にまとめるには、Postfix を配信サービスへ渡すリレーとして設定します。サーバー内のすべてのメールが、587番ポートでログインして送信されます。
ステップ1. インストール
apt install -y postfix libsasl2-modules mailutilsインストール中にメール設定の種類を尋ねられたら Internet Site を選び、メール名には自分のドメインを入れます。AlmaLinux 10 は dnf install -y postfix cyrus-sasl-plain s-nail でインストールし、systemctl enable --now postfix で起動します。
ステップ2. リレーの設定
postconf -e 'relayhost = [smtp.example.com]:587'
postconf -e 'smtp_sasl_auth_enable = yes'
postconf -e 'smtp_sasl_password_maps = texthash:/etc/postfix/sasl_passwd'
postconf -e 'smtp_sasl_security_options = noanonymous'
postconf -e 'smtp_tls_security_level = encrypt'
postconf -e 'inet_interfaces = loopback-only'inet_interfaces = loopback-only は、サーバー内から送るメールだけを受け付けるようにし、外部からこのサーバーをメールの中継に使えないようにします。
ステップ3. ログイン情報の保存
echo '[smtp.example.com]:587 SMTP_USER:SMTP_PASSWORD' > /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
systemctl restart postfix465番ポートを使うサービスなら、relayhost と sasl_passwd のポートを465に変え、postconf -e 'smtp_tls_wrappermode = yes' を1行追加します。
ステップ4. テスト送信とログの確認
echo "VPS mail test" | mail -s "Test from VPS" you@example.com
postqueue -p
journalctl -t postfix/smtp -n 20ログに status=sent が表示されれば、配信サービスがメールを受け取っています。postqueue -p は、まだ送信されていないメールの一覧を表示します。ログイン情報を修正したら、systemctl restart postfix のあと postqueue -f で再送します。
WordPress やアプリで SMTP を設定する
ウェブサイトやアプリの多くには SMTP の設定欄があるので、サーバーに Postfix を置かずに配信サービスへ直接つないでもかまいません。WordPress は SMTP プラグインをインストールして下の値を入れれば、会員登録やパスワード再設定のメールがそのサービスから送信されます。
- SMTP ホスト: 配信サービスのアドレス
- 暗号化: 587番なら TLS(STARTTLS)、465番なら SSL
- ポート: 587 または 465
- 認証: オンにして、ユーザー名とパスワードを入力
- 送信者アドレス: 自分のドメインのアドレス(例: no-reply@example.com)
Node.js、PHP、Python のアプリも、同じ値でメールライブラリを設定します。パスワードはコードに直接書かず、環境変数や設定ファイルで渡すとすっきりします。WordPress のインストールは WordPress のインストールガイドにあります。
ドメインの DNS に SPF、DKIM、DMARC を追加
受信側のメールサーバーは、そのメールが本当に自分のドメインで許可した場所から来たかを DNS レコードで確認します。3つのレコードを追加しておけば、受信トレイへの到達率が大きく上がります。
- SPF: 自分のドメインのメールを送信できるサーバーの一覧です。配信サービスが案内する include の値を、1つの TXT レコードに入れます。
- DKIM: メールに付く電子署名です。配信サービスの画面で作成される TXT または CNAME レコードをそのまま追加します。
- DMARC: SPF と DKIM の確認に失敗したメールをどう扱うかを決めます。最初は下のように、レポートだけを受け取る設定から始めます。
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"数週間レポートを見て、すべてのメールが通過していることを確認したら p=quarantine、続いて p=reject に上げて、ドメインのなりすましを防ぎます。
メールの受信と次のステップ
自分のドメイン宛てのメールを受信するには、メールホスティングサービスの MX レコードをドメインに追加します。受信メールはメールホスティングが、送信する通知メールは配信サービスが担当すれば、サーバーはウェブサイトとアプリに専念できます。
メール配信サービスで送る方式なら、サーバーを移したり新しく作ったりしても、設定を数行移すだけでそのまま引き継げます。サーバーの IP が変わっても送信の評価はサービス側にそのまま残るので、サイトを別のリージョンに移すときもメールの到達率は安定しています。
ほかのポートは、サービスに合わせて自由に開けて使えます。使うポートだけを開ける方法は基本のファイアウォールのガイド、サーバーの利用ルールは利用ポリシーにあります。
