ルーターからのポートフォワーディングで受信メールを機能させる

テスト環境をDigitalOceanから自宅のLinuxボックス(Ubuntu)に移行しましたが、受信メールの動作に苦労しています。ルーターでポート25のポートフォワーディングを行っており、メールログを確認するとメールが到着していることがわかります(ログでTo:とFrom:を確認できます)。メール受信者がDiscourseにeメールをPOSTしようとするとタイムアウトが発生し、失敗しているようです。これは、ISPがルーターを介したループバックを許可していないため、Discourseインスタンスのパブリックドメイン名がPOSTコマンドで使用されると、ルーターがパケットをドロップするため応答がなくハングしてしまうことが原因だと推測しています。

これにより、Discourseを実行しているマシンでDiscourseウェブサイトを表示することもできませんでした。しかし、/etc/hostsファイルに、パブリックドメイン名を内部ネットワークIPアドレスにマッピングする行を追加したところ、FirefoxでDiscourseインスタンスを表示できるようになりました。

メール受信コンテナが同様のことを行うための魔法のような方法があるはずだと推測しています。調べたところ、/etc/hostsファイルは使用しないようで、それが問題の原因かもしれません。mail-receiver.ymlファイルにextra_hosts:を追加する行を追加してみましたが、登録させることができませんでした。メール受信アプリに入力し、/etc/hostsに別の行を追加しようとすると(cat >>で)、行が表示されても同じ問題が発生します。

これは、POSTの失敗を示すログの行です(注:ドメイン名は例として架空のものです)。

<23>2月23日 01:00:31 receive-mail[133]: 受信者: abc@example-discourse.org.uk<19>2月23日 01:01:31 receive-mail[133]: メールを https://example-discourse.org.uk/admin/email/handle_mail にPOSTできませんでした: 実行期限切れ (Net::OpenTimeout)<19>2月23日 01:01:31 receive-mail[133]: /usr/lib/ruby/2.7.0/net/http.rb:960:in `initialize’

何か考えはありますか?

もう一度試したところ、/etc/hosts ファイルで IP アドレス/ホスト名を逆に指定していたことに気づき、動作するようになったと思います。しかし、mail-receiver コンテナを再起動すると、コンテナの /etc/hosts ファイルに追加した余分な行が失われます。mail-receiver.yml ファイルが余分な行を自動的に追加するようにする方法はありますか?

ファイルを変更する他のテンプレートを参照できます。たとえば、Web テンプレートがそれを行います。