• 作成:

msmtpでsmtp-relay.gmail.comを使うにはdomain設定が必要なことがある

sendmail互換システムがプログラムに必要になったのですが、 Docker内部でデーモンを動かすのはだるいし、 sendmailコマンドごときにコンテナを分けるのもだるいです。

でもデーモン無いと再送とか出来ないしなあと思っていたのですが、よく考えてみるとSMTPでメールを飛ばした後はフルマネージドなサービスが処理するのであまり考えなくても良さそうでした。

そこでSSMTPの後継らしい、 msmtp と言うデーモン不要のsendmailコマンドを動かそうとしていました。

しかしsmtp-relay.gmail.comを使う設定で動かなくて四苦八苦していました。

421, "4.7.0", Try again later, closing connection.(421, "4.7.0", しばらくしてからもう一度お試しください。接続を閉じます。)通常は HELO のステージで SMTP リレーへのサービス拒否(DoS)攻撃を受けていることを意味します。

SMTP エラー リファレンス - G Suite 管理者 ヘルプ

とか出てきましたけど絶対ウソだろ。

verbose付きでテストコマンドの出力を見ていて気がついたのですが、 domainがlocalhostになっているのですね。

なのでmsmtprc

domain         私のドメイン.jp

と書き加えたら動きました。

多分許可する送信者: ドメイン内のアドレスのみと設定してたのが苦労の原因ですね。

しかし全開放はGoogleも推奨していないので致し方なし…