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)攻撃を受けていることを意味します。
とか出てきましたけど絶対ウソだろ。
verbose付きでテストコマンドの出力を見ていて気がついたのですが、 domainがlocalhostになっているのですね。
なのでmsmtprc
に
domain 私のドメイン.jp
と書き加えたら動きました。
多分許可する送信者: ドメイン内のアドレスのみ
と設定してたのが苦労の原因ですね。
しかし全開放はGoogleも推奨していないので致し方なし…