Postfixは、メール転送エージェント(MTA)として機能する、人気の高いフリーでオープンソースのソフトウェアです。Postfixの役割は、メールをルーティングして配信することです。従来の使い方のほかに、ローカルアプリケーションのみからメールを送信するようにPostfixを設定することもできます。
このPostfixの適用は、さまざまな状況で展開するのに便利な手法です。たとえば、定期的にメール通知を送信する場合や、送信トラフィックが制限されているサードパーティのメールサービスプロバイダーと連携する場合などに使用できます。本格的なSMTPサーバーと比較して、Postfixは必要な機能を維持しつつ、より軽量な代替手段となります。
このチュートリアルでは、Ubuntuで送信専用のSMTPサーバーとしてPostfixをインストールおよび設定する方法を紹介します。
前提条件
このガイドに従うには、以下の前提条件を満たす必要があります。
-
適切に設定されたUbuntuサーバー(sudo権限を持つ非ルートユーザーへのアクセス権.
-
を含む)が必要です。また、完全に登録されたドメイン名も必要です。ドメイン名の詳細については、当社の商用認証局からのSSL証明書のインストールの記事をご覧ください。
-
最後に、ドメイン名がサーバーのパブリックIPアドレスを指しているDNSレコードが必要になります。
Postfixのインストール
前提条件が満たされたら、サーバーにPostfixをデプロイする準備が整います。Postfixをインストールする最も簡単な方法は、 mailutilsパッケージをインストールすることです。これは公式のUbuntuリポジトリから直接入手できます。
まず、ターミナルを起動し、 APTパッケージデータベースを更新します。
|
1 |
sudo apt update |

次に、Postfixをインストールします。
|
1 |
sudo apt install mailutils |

インストールプロセス中に、次の設定ウィンドウが表示されます。デフォルトのオプションは Internet Siteです。選択を確定するには、 TABキーを押してカーソルを次のセクションに移動します。その後、 Enter:

キーを押します。次のステップでは、システムメール名(System mail name)の入力を求められます。これは、作成時にサーバーに割り当てられた名前になります。スクリプトに記載されているように、ローカルホストのメールアドレスが「foo@example.org」の場合、システムメール名は example.org:

なお、設定スクリプトは、後からでも次のコマンドを使用していつでも実行できます。
|
1 |
sudo dpkg-reconfigure postfix |
Postfixの設定
このステップでは、 localhostからのみメールを送受信するようにPostfixを設定します。これには、Postfixが loopbackインターフェースをリスンする必要があります。これは、サーバーが内部通信に使用する仮想ネットワークインターフェースです。次に、お好みのテキストエディタを使用してPostfixの設定ファイルを開きます。
|
1 |
sudo nano /etc/postfix/main.cf |
Change the value of inet_interfacesの値を loopback--onlyに変更します。:

変更する必要があるもう1つのディレクティブは、 mydestinationです。これは、 local_transportメール配信トランスポートを介して配信されるドメインのリストを定義します。デフォルト値は次のようになります。

その値を以下のように変更します。
|
1 |
mydestination = localhost.$mydomain, localhost, $myhostname |

ドメインが実際にはサブドメインであり、メインドメインから送信されたようにメールを表示したい場合は、Postfix設定の最後に次のディレクティブを追加します。これにより、メールアドレスからサブドメインが削除されます。
|
1 |
masquerade_domains = <main_domain> |

変更を反映するには、Postfixを再起動します。
|
1 |
sudo systemctl restart postfix |
SMTPサーバーのテスト
設定プロセスが正常に完了したと仮定して、テストを行います。そのためには、 mailコマンドを使用して、Postfixが外部のメールアカウントにメールを送信できるかどうかを確認します。これは mailutilsパッケージの一部です。
|
1 |
echo "Test email body" | mail -s "Subject line" <email_address> |
指定されたメールアドレスにメッセージが届くはずです。現時点では、送信されるすべてのメールは暗号化されていません。サービスプロバイダーは通常、このようなメールをスパムとしてタグ付けするため、メールが届いているかスパムフォルダを確認してください。
もし mail コマンドがエラーを報告するか、長時間経過してもメールが届かない場合は、Postfixの設定を再確認し、サーバー名とホスト名が正しく設定されていることを確認してください。この設定では、メールは以下のアドレスから送信されたように見えます。
|
1 |
<username>@<domain> |
ここで、ユーザー名は、 mail コマンドを実行したサーバーユーザーのユーザー名になります。
システムメールの転送
メールサーバーが正しく設定され、機能していることが確認できました。次に、 root 宛てのメールを転送するように設定する必要があります。サーバーに送信されるすべてのシステム生成メッセージは、外部のメールアドレスに転送されます。メール受信者について、 /etc/aliases ファイルには代替名のリストが含まれています。お好みのテキストエディタを使用して開いてください。
|
1 |
sudo nano /etc/aliases |
デフォルトでは、次のようになります。

ファイルの末尾に次の行を追加します。
|
1 |
root: <email_address> |

これは、 root に送信されたメールがメールアドレスに転送されることを示します。変更を有効にするには、次のコマンドを実行します。これにより、 mail コマンドが使用するエイリアスデータベースが再構築されます。
|
1 |
sudo newaliases |
![]()
次に、変更が成功したかどうかをテストする必要があります。テストメールを root:
|
1 |
echo "Test root email body" | mail -s "Subject line" root |
メールは指定されたメールアドレスに届くはずです。暗号化がまだ設定されていないため、スパムフォルダを確認することを忘れないでください。
SMTP暗号化の有効化
暗号化されていない形式でメールを送信するのは危険な行為です。安全性を確保するために、SMTP暗号化を有効にする必要があります。これを実現するために、ドメイン用の無料のTLS証明書をLet’s Encryptからリクエストします。
Ubuntuの場合、その作業を行うのはCertbotツールです。幸いなことに、これは公式のUbuntuリポジトリから直接入手できます。次のコマンドでCertbotをインストールします。
|
1 |
sudo apt install certbot |

サーバーにUFWが設定されていると仮定すると、ドメイン検証を行えるようにポート 80 を開放する必要があります。有効にするには、次のコマンドを実行します。
|
1 |
sudo ufw allow 80 |

次に、Certbotを実行して証明書を生成します。これにより、Certbotに4096ビットのRSAキーで証明書を発行するように指示します。検証はポート 80(HTTP)を介して行われます。
|
1 |
sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d <domain> |
出力は次のようになります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
保存中 デバッグ ログ へ /var/log/letsencrypt/letsencrypt.log プラグイン 選択済み: Authenticator standalone, Installer None 取得中 の 新規 証明書 実行中 以下 の チャレンジ: http-01 チャレンジ 対象 '<domain>' 待機中 対象 検証... クリーンアップ 中 チャレンジ 重要 注意事項: - おめでとうございます! あなたの 証明書 と チェーン は すでに 保存されました に: /etc/letsencrypt/live/<domain>/fullchain.pem あなたの キー ファイル は すでに 保存されました に: /etc/letsencrypt/live/<domain>/privkey.pem あなたの 証明書 は 期限切れになります に 2020-07-11. 〜するには 取得する 一つの 新しい または 調整された バージョン の この 証明書 に おいて 将来, 単に 実行します certbot もう一度. 〜するには 非-対話的に 更新する *すべて* の あなたの 証明書, 実行します "certbot renew" - もし あなたが 気に入ったら Certbot, お願いします 検討してください 支援することを 私たちの 活動を によって: 寄付する へ ISRG / Let's Encrypt: https://letsencrypt.org/donate 寄付する へ EFF: https://eff.org/donate-le |
キーは次のディレクトリに保存されます:
|
1 |
/etc/letsencrypt/live/<domain> |
証明書が生成されたので、テキストエディタでPostfixの設定ファイルを開きます:
|
1 |
sudo nano /etc/postfix/main.cf |
次のセクションを見つけます TLS パラメータ:

その後、ディレクティブの値を変更します smtpd_tls_cert_file および smtpd_tls_key_file:

次に、ファイルを保存して閉じます。変更を有効にするには、Postfixを再起動します:
|
1 |
sudo systemctl restart postfix |
最後に、宛先メールアドレスにダミーメールを再度送信します:
|
1 |
echo "This is email body" | mail -s "Email subject line" <email> |
これで、メールは他のメールと同様に正常に表示されるはずです。メールの技術情報を確認すると、暗号化されて表示されます。
最後に
おめでとうございます!Postfixを使用した送信専用メールサーバーの設定に成功しました。メールの送受信も、適切な暗号化キーを使用して安全に行われます。
メール転送を最適化するその他の方法については、このチュートリアルをご覧ください GoogleのSMTPサーバーを使用する最適な方法.
ハッピーコンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。