私のデスクトップ上のnode.jsから私のリモートPostfix/Dovecot SASLサービスを通して電子メールを送信する必要があります。
Thunderbirdを使って電子メールを送信すると機能し、Postfixサーバーのログが表示されます
Anonymous TLS connection established from unknown[dh.cp.ip.ip]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
しかし、Postfixサーバがログに記録されるNodemailerを介してはいけません。
_Nov 26 22:02:31 servicelabel postfix/submission/smtpd[27019]: connect from unknown[dh.cp.ip.ip]
Nov 26 22:02:31 servicelabel postfix/submission/smtpd[27019]: lost connection after CONNECT from unknown[dh.cp.ip.ip]
Nov 26 22:02:31 servicelabel postfix/submission/smtpd[27019]: disconnect from unknown[dh.cp.ip.ip] commands=0/0
_
これらの同じ設定は、Nodemailer TransportとThunderbirdに使用されます。
_ let transporter = nodemailer.createTransport(
{
Host: "mx.example.com",
port: 587,
secure: false, // use TLS
// requireTLS:true,
auth: {
user: "emailuser",
pass: "password"
},
tls: { rejectUnauthorized: false },
// logger: true,
debug: true
},
{
from: '[email protected]',
}
);
_
しかし、NodemailerはTLSと同じ方法でDovecotに接続しませんでした。
安全をtrue
に変更してTLSを_SSL routines:ssl3_get_record:wrong version number
_エラー(下)に強制します。トランスポートを検証するときに表示されます。
_transporter.verify(function(error, success) {
if (error) {
console.log(error);
} else {
console.log("Server is ready to take our messages");
return false;
}
});
_
_Error: 140185182082944:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:
code:"ECONNECTION"
command:"CONN"
function:"ssl3_get_record"
library:"SSL routines"
message:"140185182082944:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:\n"
reason:"wrong version number"
stack:"Error: 140185182082944:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:\n"
_
このコマンドでテストすると、
_openssl s_client -starttls smtp -connect mx.example.com:587
_
_depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = mx.example.com
verify return:1
---
Certificate chain
0 s:CN = mx. ...
...
...
_
... SSL/StartTLSハンドシェイクは成功し、証明書を成功させる
しかし、このコマンドを使用している場合
_openssl s_client -connect mx.example.com:587 -crlf -ign_eof
_
Nodemailerと同じエラーが発生します
CONNECTED(00000005) 140508975112640:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:332:
私はいくつかのオプション設定を試してみました、そして損失で...
Nodemailerを介してDovecot/Postfix Serverを介して安全な電子メールを送信するにはどうすればよいですか。 Nodemailerでいくつかの証明書を設定する必要がありますか? Node.jsから安全な電子メールを送信するために異なるものを使うべきですか?あらゆる助けがあります。
Mocha
の私の単体テストコンテキストは、利用可能なNode.jsの暗号スイートを持っていません。
Nodemailerには、node.jsコンテキストで実行中のStartLSからTLSハンドシェイクを開始する問題はありません。