【AlmaLinux】Postfixを使ってメール中継サーバーを構築してGmailへSMTPリレーしてみた

IT、仕事

はじめに

前回はPostfixをインストールし、SMTPサーバーとしてローカルユーザーへメールを配送するところまで確認しました。

今回はSMTP認証(SASL)とTLSを利用して、Gmailを中継先としたメール中継サーバーを構築してみます。

最終的な構成は以下の通りです。

SMTPクライアント
        │
        ▼
Postfix(AlmaLinux)
        │
SMTP AUTH + STARTTLS
        ▼
smtp.gmail.com
        │
        ▼
Gmail

検証環境

項目内容
OSAlmaLinux 9
仮想環境VirtualBox(NAT)
メールサーバーPostfix
中継先Gmail SMTPサーバー

Gmail側の準備

まずGoogleアカウントで2段階認証を有効にしました。

その後、「アプリパスワード」を発行し、PostfixからGmailへSMTP認証できるようにしました。

通常のGoogleアカウントのパスワードではなく、アプリパスワードを利用することで安全に認証できます。


SASL認証情報の作成

SMTP認証情報を保存するファイルを作成します。

sudo vi /etc/postfix/sasl_passwd

以下のように記述しました。

[smtp.gmail.com]:587 Gmailアドレス:アプリパスワード

データベース化します。

sudo postmap /etc/postfix/sasl_passwd

認証情報なので権限を変更します。

sudo chmod 600 /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd.db

Postfixの設定

/etc/postfix/main.cfへ以下を追加しました。

relayhost = [smtp.gmail.com]:587

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt

設定を確認します。

sudo postfix check

問題がなければ再起動します。

sudo systemctl restart postfix

SMTP通信でテスト

SMTPサーバーへ接続します。

telnet localhost 25

以下のSMTPコマンドを入力しました。

EHLO localhost
MAIL FROM:<自分のGmailアドレス>
RCPT TO:<自分のGmailアドレス>
DATA
Subject: Relay Test

Postfix Relay Test
.
QUIT

今回は送信元・宛先ともに自分のGmailアドレスを指定しました。


Gmailへメールが届いた

送信後、Gmailの受信トレイを確認すると、送信したメールが正常に届いていました。

また、Postfixのログでも

status=sent

と表示され、中継が正常に完了していることを確認できました。


ローカル配送との違い

前回はSMTPで受信したメールをローカルユーザーへ配送していました。

SMTP
   │
   ▼
Postfix
   │
   ▼
/var/spool/mail/daichi

今回は配送先がGmailになっています。

SMTP
   │
   ▼
Postfix
   │
SMTP AUTH + TLS
   ▼
smtp.gmail.com
   │
   ▼
Gmail

Postfix自身がメールを配達するのではなく、GmailのSMTPサーバーへ中継している点が大きな違いです。


メール中継サーバーは何のためにあるのか

今回の検証では、自分のGmailから自分のGmailへ送信しました。

実際には、自分だけで利用するのであればメール中継サーバーは必要ありません。

企業では以下のような構成で利用されます。

監視サーバー
業務システム
Webサーバー
      │
      ▼
Postfix
      │
      ▼
Microsoft 365
      │
      ▼
利用者

各サーバーはPostfixへメールを渡すだけでよく、SMTP認証や暗号化などはPostfixがまとめて処理します。

そのため、

  • SMTP認証情報を一元管理できる
  • ログを一括管理できる
  • メール送信設定を各サーバーへ持たせる必要がない

といったメリットがあります。


まとめ

今回はPostfixをSMTPサーバーからメール中継サーバーへ発展させました。

実施した内容は以下の通りです。

  • Gmailのアプリパスワード作成
  • SASL認証設定
  • STARTTLS設定
  • relayhost設定
  • GmailへのSMTPリレー
  • Gmail受信確認
  • Postfixログ確認

SMTPサーバーではローカル配送を行っていましたが、今回は外部SMTPサーバー(Gmail)へ中継する仕組みを構築することができました。

次回

次回は、今回追加した設定項目を1つずつ掘り下げ、

  • relayhostとは何か
  • SMTP認証(SASL)の役割
  • STARTTLSの仕組み
  • なぜ587番ポートを利用するのか

など、「動いた理由」を理解することを目的に学習していきたいと思います。

タイトルとURLをコピーしました