Digital Ocean、SendGrid、Netlify - 管理者アカウントの登録メールが届かない

私は、ブログ用のオープンフォーラムを構築するために、Digital Ocean(ホスティング)、SendGrid(SMTP)、Netlify(ドメイン、DNS)を使用しています。

ドメインとDNSの設定は完了し、登録ページにアクセスできるようになりました。

しかし、開発者宛のメールには届きません。

nano containers/app.yml で以下の設定を試みました。

DISCOURSE_HOSTNAME: 'discourse.myblog.com'
DISCOURSE_DEVELOPER_EMAILS: 'adminEmail@gmail.com'

DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 2525
DISCOURSE_SMTP_USER_NAME: {myusername}
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: true           # (オプション、デフォルトは true)

DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: {myusername}
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: true           # (オプション、デフォルトは true)

DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: apiKey
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: true           # (オプション、デフォルトは true)

DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: {myusername}
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: false           # (オプション、デフォルトは true)

DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: {myusername}
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: false           # (オプション、デフォルトは true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

./discourse-doctor を実行してメール送信テストを行ったところ、以下のエラーが表示されました。

535 Authentication failed: Bad username / password

SendGridのユーザー名としてAPIキーを使用されているようですか?

apiKey とユーザー名(admin と teammate)の両方を試しましたが、まだ動作しません。

私の知る限り、API キーを使用するには、対応するパスワードとともにユーザー名 ‘apikey’ を使用する必要があります。大文字小文字の区別があるかどうかは確認できませんが、念のため大文字小文字を区別して対応することをお勧めします。

DigitalOcean のサポートに連絡することをお勧めします。新しいアカウントでは、サードパーティのサービスへの発信 SMTP がブロックされることがあるためです。ホストからそのポートに telnet できますか?

できない場合は、ポート 2525 を使用してください。チケットを待つ必要はありません。私はデフォルトでポート 2525 を使っています。デメリットはありません。

2525 でも試してみましたが…

apikey でも試しましたが、動作しません…

はい、このチュートリアルに従って telnet で接続を試みました (How to send an Email with SMTP | SendGrid Docs | Twilio)。
正常に接続できました。

@Stephen 素晴らしいアイデアですね。Digital Ocean にブロックアウトバウンドSMTPについて連絡します。

[quote=“erickimme, post:8, topic:144962”]
良いアイデアですね。Digital Ocean にブロックされたアウトバウンド SMTP について連絡します。[/quote]

それは不要です。なぜなら:

[quote=“erickimme, post:7, topic:144962”]
そして、正常に接続できました。[/quote]

テストメッセージは SendGrid のログに表示されていますか?

その方法については、SendGrid の担当者にお尋ねください。

わかりました、ログを取得します!

ポートが「Filtered」状態になっている問題があるかもしれません。

PORT     STATE    SERVICE
25/tcp   filtered smtp
587/tcp  filtered submission
2525/tcp filtered ms-v-worlds

Digital Oceanから届いたメッセージは以下の通りです。
ファイアウォールでポート25が開いているか確認してください。以下のコマンドで確認できます:nmap -p 25,465,587 “あなたのDropletのIPアドレス”

サンプルnmapコマンド:

nmap -p 25,465,587 142.93.189.227

Starting Nmap 7.70 ( [https://nmap.org](https://nmap.org/) ) at 2019-10-08 11:10 IST
Nmap scan report for [unms.adastratechnology.com](http://unms.adastratechnology.com/) (142.93.189.227)
Host is up (0.56s latency).
PORT STATE SERVICE
25/tcp closed smtp
465/tcp closed smtps
587/tcp closed submission

Digital Oceanからのメッセージ:

これにより、ポート25の現在のステータスがわかります。ステータスが「Filtered」または「closed」の場合は、ポート25に対してCloud Firewallを開いてください。

一般的なiptablesコマンドに関するガイドはこちら:https://www.digitalocean.com/community/tutorials/iptables-essentials-common-firewall-rules-and-commands#service-mail

問題はあなたのサーバーのポート 25(つまり、受信側)ではなく、あなたのサーバーからリモートホストへのポート 587 への送信トラフィックです。

DigitalOcean は、新しいアカウントが「悪いこと」を行うために使われることがあるため、これをブロックする傾向があります。

はい、サポートチケットを提出して、返信を待っています。

これはSendGridに関連していると思いますか?
@Stephen

ほぼ間違いなく、問題はありません。新しいアカウントで新規インストール時に送信ポートに関する問題が多く見られますが、SendGrid に固有の問題ではありません。

Linux または Mac のワークステーションをお持ちの場合は、以下のようにして、SendGrid への SMTP 接続をポート 587 経由で独立してテストできます。

openssl s_client -starttls smtp -connect smtp.sendgrid.com:587

VPS からは失敗し、他の場所からは成功する場合は、DO からの送信トラフィックに問題があります。

私は Mac からテストしましたが、正常に接続できました。

mac(Catalina)でこのコードを実行しました。

openssl s_client -starttls smtp -connect smtp.sendgrid.net:587 を実行しました。

以下のような返却結果が得られました。

CONNECTED(00000006)
depth=3 C = US, O = "The Go Daddy Group, Inc.", OU = Go Daddy Class 2 Certification Authority
verify return:1
depth=2 C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2
verify return:1
depth=1 C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2
verify return:1
depth=0 OU = Domain Control Validated, CN = *.smtp.sendgrid.net
verify return:1
---
Certificate chain
 0 s:/OU=Domain Control Validated/CN=*.smtp.sendgrid.net
   i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
 1 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
   i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
 2 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
   i:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGvzCCBaegAwIBAgIIR8KHdm5J8J0wDQYJKoZIhvcNAQELBQAwgbQxCzAJBgNV
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRow
GAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsGA1UECxMkaHR0cDovL2NlcnRz
LmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQDEypHbyBEYWRkeSBTZWN1
cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwHhcNMTgxMjI4MjAyMjIwWhcN
MjAxMjI4MjAyMjIwWjBBMSEwHwYDVQQLExhEb21haW4gQ29udHJvbCBWYWxpZGF0
ZWQxHDAaBgNVBAMMEyouc210cC5zZW5kZ3JpZC5uZXQwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQC/xYdx1oyPHcE6EdH61RXJK9JYA9p9GOrYhJ6rVq2c
zpGR3/4EHwaZO/daZxvTn5p3LRBBW5KBBBNCLa0Vl84dLt6skUg3oWo17mim2ly1
AegTwN15/wxqq8Hf2G4Sr9g00zlBAEs2HeOyr3SxEvLCLscYtIKG7cD+CsUi0JT6
EeDXCVL04nJIheFh4h9TRcCook97yuqt7muySrarzekatOnpv4kuU8bk0uq4ym5K
NO4zRUiCRy7JXAC2KZ4+0qhSlPFACRvygdPxK5ICvQq8/ZPlRWVn3yrWnQ4kEekp
jDT4ucOpv8V/SxYmsBRqFD35ASDj6PZLYmJFb9XdzGCzAgMBAAGjggNFMIIDQTAM
BgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNV
HQ8BAf8EBAMCBaAwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDovL2NybC5nb2RhZGR5
LmNvbS9nZGlnMnMxLTkwMS5jcmwwXQYDVR0gBFYwVDBIBgtghkgBhv1tAQcXATA5
MDcGCCsGAQUFBwIBFitodHRwOi8vY2VydGlmaWNhdGVzLmdvZGFkZHkuY29tL3Jl
cG9zaXRvcnkvMAgGBmeBDAECATB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG
GGh0dHA6Ly9vY3NwLmdvZGFkZHkuY29tLzBABggrBgEFBQcwAoY0aHR0cDovL2Nl
cnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5L2dkaWcyLmNydDAfBgNV
HSMEGDAWgBRAwr0njsw0gzCiM9f7bLPwtCyAzjAxBgNVHREEKjAoghMqLnNtdHAu
c2VuZGdyaWQubmV0ghFzbXRwLnNlbmRncmlkLm5ldDAdBgNVHQ4EFgQUqLajl4xR
pZ1YZD2l6KsTfcmd8t4wggF9BgorBgEEAdZ5AgQCBIIBbQSCAWkBZwB2AKS5CZC0
GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABZ/Z7aIYAAAQDAEcwRQIhAOhF
95cuap1qIlSVtRzNkaUbNHxpgj+RoBfxcSFgqlBZAiBNsRnVaIwWMBoR9s+a9YwC
neLWWN777jRjew5mv2DVbwB2AO5Lvbd1zmC64UJpH6vhnmajD35fsHLYgwDEe4l6
qP3LAAABZ/Z7bY8AAAQDAEcwRQIgJZMibCSMJDwTwEp64XSQQXCuYtKJDvhT7FwK
rxoyH6oCIQCz1HVQbPLwMOXQPBRQFtpYEb18JCVdzlh8+f0hITgC5gB1AF6nc/nf
VsDntTZIfdBJ4DJ6kZoMhKESEoQYdZaBcUVYAAABZ/Z7cugAAAQDAEYwRAIgQoxF
Fak6Aq9tVDo5BjaSl+90pZ8928SmDpA3XrQ7BrQCIHdOuigFbYK96gJ/GPaVNGqc
w5FKxw9Z8TnpjZH1GEC/MA0GCSqGSIb3DQEBCwUAA4IBAQBbBTL603nJ9H7ClsKR
g/XmFpGwQ4C5OftGmZ/Z/CG9iqOkLB2TPqdJ9NZRruMpWjnOnvDFoQ3NMSfDYdsn
25fzh30fx2+zIWW2IdKa1yO4A9tr3cxn4iINy/+dcNmF6tciGJtdBhZZgpyqhymu
kjuMCQRL17uVkLyrYA/+Ti5N02fzRchprOydiasnhHSdDM3HVZQOqjOvoB5omtuf
D1aldjrgW+TcILlnZxYvaqDPeMvUIZxQPzealRniQ7tmMOAgJfjZXxzuXatqXqw0
zbvQOiY2pSDn7WPxLbGafLAOFWIWhHtkEZMRC2n3WpupiZuC0pacmQeUgVY6Vabs
KU8W
-----END CERTIFICATE-----
subject=/OU=Domain Control Validated/CN=*.smtp.sendgrid.net
issuer=/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
---
No client certificate CA names sent
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 5002 bytes and written 357 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: F315CBBB90B16A8F85D95F0CD18C07135A128B5FE6CE53D50C7CF81310B28732
    Session-ID-ctx: 
    Master-Key: E4C09CCC8AECB9C596D608B79E9A5360B88E2C31EB98C770E96A5037177F7F5D92B9CFA449B8ECA7AEA5D4CB873601D4
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - f7 61 88 44 b6 0d 7c ce-0c 35 b3 ba 33 03 ce 33   .a.D..|..5..3..3
    0010 - 95 99 62 e9 f9 ea 5e e6-00 f8 09 66 47 bd 28 cf   ..b...^....fG.(.
    0020 - 51 64 c5 76 3a ac b2 e2-ff 2a be 29 63 8c a8 d2   Qd.v:....*.)c...
    0030 - 76 2e ba 08 32 74 4a 4b-24 c8 69 ef 71 8e da e6   v...2tJK$.i.q...
    0040 - e3 dd c3 a8 19 84 02 c9-9e e7 7a 7a b8 b7 78 f3   ..........zz..x.
    0050 - 02 8c e6 ff 85 0e f5 4d-f3 5a 49 b1 22 40 12 ee   .......M.ZI."@..
    0060 - 7d d5 8c f4 d9 50 57 0a-c2 82 06 52 9e 64 89 fd   }....PW....R.d..
    0070 - 21 7b e4 f0 f3 e8 2c 61-09 a7 99 1f c8 7e c5 1b   !{....,a.....~..
    0080 - 23 fc 11 bc a7 8d 21 d6-05 6f 86 66 5b e9 2e 87   #.....!..o.f[...
    0090 - d0 98 8f b2 2b 7d 18 90-50 62 67 8f 77 8b c2 37   ....+}..Pbg.w..7

    Start Time: 1584738375
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---
250 AUTH=PLAIN LOGIN

はい、EHLO と入力して Enter キーを押すと、以下のような応答が表示されるはずです。

250-smtp.sendgrid.net
250-8BITMIME
250-PIPELINING
250-SIZE 31457280
250-STARTTLS
250-AUTH PLAIN LOGIN
250 AUTH=PLAIN LOGIN

これで SendGrid に接続できることが確認できます。もし DO のドロレットからこの接続に失敗する場合は、原因が明らかになります。

接続できたと思います。SendGridについては問題ないでしょう。

EHLO
250-smtp.sendgrid.net
250-8BITMIME
250-PIPELINING
250-SIZE 31457280
250-STARTTLS
250-AUTH PLAIN LOGIN
250 AUTH=PLAIN LOGIN

@Stephen 依然として、Digital Ocean からの返信を待っています。送信メールのブロック解除方法についてです。

はい、Droplet から SSH を介してそれを繰り返した場合、接続されますか?

私は DO の Droplet の一つから確認しましたが、ポート 587 がオープンであるため、同じように動作しています。

もし私が先ほど正しかったなら、接続は失敗するはずです。接続が失敗すれば、正しい手順を待っていることになります。問題が他の場所にあることに気づく前に待つのではなく、確実に確認する方が良いでしょう!

Digital Ocean によってアウトバウンドメールがブロックされていないことを、少なくとも 2 つの異なる方法で示しています。

推測になりますが、正しいユーザー名またはパスワードを使用していないと思われます。