HELPER VPS

VPS からのメール送信、587・465番ポートで SMTP 配信サービスに接続

HELPER VPS のすべてのサーバーは、スパムを防ぐために外向きの25番ポートを閉じており、そのおかげで同じネットワークを使うすべてのサーバーの IP の評価がクリーンに保たれます。メールはメール配信サービスの587番か465番ポートで送ると、受信トレイにより確実に届きます。

なぜ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 -quiet

1行目が 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. インストール

Ubuntu, Debian
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 postfix

465番ポートを使うサービスなら、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 の確認に失敗したメールをどう扱うかを決めます。最初は下のように、レポートだけを受け取る設定から始めます。
DNS TXT
_dmarc.example.com  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

数週間レポートを見て、すべてのメールが通過していることを確認したら p=quarantine、続いて p=reject に上げて、ドメインのなりすましを防ぎます。

メールの受信と次のステップ

自分のドメイン宛てのメールを受信するには、メールホスティングサービスの MX レコードをドメインに追加します。受信メールはメールホスティングが、送信する通知メールは配信サービスが担当すれば、サーバーはウェブサイトとアプリに専念できます。

メール配信サービスで送る方式なら、サーバーを移したり新しく作ったりしても、設定を数行移すだけでそのまま引き継げます。サーバーの IP が変わっても送信の評価はサービス側にそのまま残るので、サイトを別のリージョンに移すときもメールの到達率は安定しています。

ほかのポートは、サービスに合わせて自由に開けて使えます。使うポートだけを開ける方法は基本のファイアウォールのガイド、サーバーの利用ルールは利用ポリシーにあります。

あわせて読みたいガイド

このガイドに続けて設定しておくとよい内容です。

すべてのガイドを見る