Richie
(Richie Rich)
1
SendGrid から Amazon SES への移行でつまずいています。
app.yml の設定を共有してくださるか、私の設定が正しいか確認していただけませんか?
## TODO: 新しいアカウントの検証と通知送信に使用する SMTP メールサーバー
DISCOURSE_SMTP_ADDRESS: email-smtp.eu-west-2.amazonaws.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: xxxxxxx
DISCOURSE_SMTP_PASSWORD: "xxxxxxxxxx"
DISCOURSE_SMTP_ENABLE_START_TLS: true # (オプション、デフォルトは true)
DISCOURSE_SMTP_AUTHENTICATION: login
ここで auth パラメータは正しいでしょうか?
何か見落としているでしょうか?
ドメインが SES で検証されているため、SMTP 認証パラメータは不要です。
また、まだ行っていない場合は、SES アカウントをサンドボックスモードから解放し、制限の引き上げを申請する必要があるかもしれません。サンドボックス条件はリージョンごとに適用されます。
Richie
(Richie Rich)
3
はい、ドメインが検証済みで、本番モードにあり、レート制限も引き上げられたことを確認しました。
他はすべて問題なさそうですか?
Richie
(Richie Rich)
5
パスワードが"マーク"で囲まれていても問題ありませんか?
Richie
(Richie Rich)
8
これも正しいでしょうか?(ご提案いただいた通り、認証行をコメントアウトしました)
Richie
(Richie Rich)
9
AWS SES を通じてメールが送信されない理由が依然として見当がつきません。
Discourse の管理ページからテストメールを送信すると、単に「送信済み」と表示されるだけです。パスワード再設定のリクエストを試しても、手順は正しく進みますが、メールは決して届きません。
SES にはログが残らないようなので、実際にメールを受信しているかどうかを確認できません。
問題の原因となり得る可能性があるのは、返信先アドレスが当サイトのドメインではなく、gmail.com アカウントを使用している点だけです。
この組み合わせやシナリオに直面した経験がある方はいますか?
pfaffman
(Jay Pfaffman)
10
これは「From」行に表示されるメールアドレスです。SES が送信するドメイン内のアドレスである必要があります。SES は、Gmail から送信されているように偽装したメールを送信しません。gmail.com はあなたが管理できないため、SES は「From」行にそれを記載したメールを送信しません。notification_email は something@yourverifieddomain の形式にする必要があります。
Richie
(Richie Rich)
11
もしかしたら、そういうことなのかもしれませんね。
現在の SendGrid の設定は長年問題なく動作しており、以下のような構成になっています:
返信先アドレスが gmail.com ドメインにあるため、SES では私が行おうとしていることが単純に不可能だ、とおっしゃっているのでしょうか?
pfaffman
(Jay Pfaffman)
12
通知メールは「From」行に記載されているもので、はい、それが問題であることはかなり確信しています。変更を試みましたか?
私も SES を使用しており、問題なく動作しています。私の設定との違いとして、DISCOURSE_SMTP_AUTHENTICATION: login という行が存在しない点が挙げられます。また、DISCOURSE_SMTP_ENABLE_START_TLS: true と DISCOURSE_SMTP_PORT: 587 は両方ともコメントアウトされていますが、これは影響しないはずです。
app.yml で私が変更するのは SMTP アドレス、ユーザー名、パスワードの 3 行だけです。残りは新規インストール時のデフォルト設定のままコメントアウトされています。再ビルド後は、サイト設定の「通知メール」を、SES で検証済みのドメインを使用するアドレスに設定しているか確認するだけです。パスワードにクォートは使用していませんが、以前のインストールではクォートありでもなしでも問題なく動作していました。
はい、上記の回答で推奨されているように、返信先アドレスを検証済みの SES ドメインを使用するアドレスに変更して、正常に送信されるかどうかを試す価値はあります。
それでも動作しない場合は、ホストが特定のポートをブロックしていないか確認し、SES の認証情報が正しく生成されたかを再確認してください。上記でドメインが SES で検証済みであることを確認されているようですが。
Richie
(Richie Rich)
14
詳細な情報をありがとうございます @markersocial 
お伺いしてもよろしいでしょうか?「返信先」のメールアドレスと「送信元」のアドレスは、異なるドメインに設定されていますか? 
ご心配なく 
返信先アドレスは送信元ドメインと同じドメインですね。ただし、一部のケースでは同じサブドメインではありません(それでもルートドメインは同じです)。どちらの場合も私にとっては問題なく動作しています。
これはお気づきかと思いますが、Discourse が送信に使用する送信元メールアドレスの検証は完了しましたか?
もし notify@yourverifieddomain のような形式であれば、SES にログインし、「Identity Management」セクションの 2 行目にある送信メールアドレスを追加して検証する必要があります。これを行わない限り、メールは一切送信されません。
アラームもサイレンもありません。単に送信されないだけです。
Gmail を返信先として設定するのは素晴らしい選択です。私もそうしました。そうすることで、From と Reply の不一致によるスパムブロックを回避でき、メンバー向けの認証メールが正常に届くようになりました。
最終的には、受信メールを Discourse API に転送するシンプルな AWS Lambda を作成しました(学習に 1 週間かかりましたが)。非常にクリーンで、POSTFIX は不要です。