メールサーバーからメールを受信できません

皆様、こんにちは。

この問題は既知の課題であり、比較的簡単に発生するものです。私は多くのテストを読み、試行してきましたが、「メール送信」のステップで既に詰まってしまいました。

私は以下の手順に従って、discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub を参照しました。

git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse

/samples/ ディレクトリに移動し、standalone.yml/containers/app.yml にコピーします。

次に、サーバーに関する情報を修正してください。
その後、以下を実行します。

sudo ./discourse-doctor

最初の試行

app.yml を以下のように設定しました。

DISCOURSE_HOSTNAME : 'localhost'

さらに、以下の情報を入力しました。

  DISCOURSE_SMTP_ADDRESS: XXX
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: XXX
  DISCOURSE_SMTP_PASSWORD: XXX
  DISCOURSE_SMTP_ENABLE_START_TLS: true   

メールサーバーも内部ネットワーク上に構築されています。
最初は正常に動作しました。Discourse は登録メールを正しく送信でき、通常通り管理者画面にもアクセスできました。

しかし、HOSTNAME を localhost に設定している場合、内部 IP(例:10.1.X.X)を使用してブラウザからアクセスすることができません。


2 回目の試行

そのため、DISCOURSE_HOSTNAME のみを変更し、app.yml の他の情報は変更しませんでした。

DISCOURSE_HOSTNAME : '10.1.3.91'

注:10.1.3.91 は私の内部(ローカルエリア)IP です。

このように hostname を変更したところ、ブラウザからアクセスできるようになりました。しかし、メールサーバーが機能しなくなり、Discourse からのメールを受信できなくなりました。


補足

SMTP を使用して Python でメール送信を試みました。

スクリプトは以下の通りです。

from email.mime.multipart import MIMEMultipart
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib

content = MIMEMultipart() 
content["subject"] = "Learn Code With Mike"  
content["from"] = " (my email) "  
content["to"] = " (testing email) "
content.attach(MIMEText("Demo python send email"))  


with smtplib.SMTP(host=" (as same as DISCOURSE_SMTP_ADDRESS) ", port="587") as smtp: 
    try:
        smtp.ehlo() 
        smtp.starttls()  
        smtp.login(" (as same as DISCOURSE_SMTP_USER_NAME) ", " (as same as DISCOURSE_SMTP_PASSWORD) ") 
        smtp.send_message(content)  
        print("Complete!")
    except Exception as e:
        print("Error message: ", e)

すると、正常に動作しました。これは、SMTP 情報が正しく、使用可能であることを証明しているのでしょうか?

この問題について何かご存知でしょうか?

メールサーバーに関しては、Elastic EmailMailjet も試しましたが、やはり動作しませんでした。

結論:

DISCOURSE_HOSTNAMElocalhost を使用すると、メールサーバーは動作します。
DISCOURSE_HOSTNAME を内部 IP(つまりローカルエリア IP)に変更すると、メールサーバーは動作しません。

大変ありがとうございます!!!

よろしくお願いいたします、
Chieh

「いいね!」 1

更新:

初期段階で「おめでとうございます、Discourse をインストールしました!」と「管理者アカウントを登録」というメールを受信し、他のデバイスから特定の内部 IP にアクセスできました。しかし、これらの手順の後、「ページが見つかりません」というエラーが発生します。なぜ最初は内部 IP でアクセスできたのに、この設定後に元の IP が無効になってしまうのでしょうか?
不思議です…

問題は自分で解決できたようです。

/etc/hosts に移動し、ホスト名を自分の IP アドレスに設定してください。
ホスト名も IP アドレスに設定されています。

DISCOURSE_HOSTNAME は内部 IP アドレスを使用できます。
これで動作するようになります。

(もちろん、これは内部利用のみを対象としています。)

「いいね!」 3

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.