Msmtp With SendGrid For Cron

SMTPサーバーとして、mstmpにSendGridのSMTPを設定していたんだけど、普通にsendmailで送信したら送ることができるのに、どうしてもCronからのメールがエラーになっていた。

sendmail: server message: 550 The from address does not match a verified Sender Identity. Mail cannot be sent until this error is resolved. Visit https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ to see the Sender Identity requirements

Cronでの送信時のFromは、Debian系のOSだと変えられないのでどうしたもんかと思っていたんだけど、最近やっと回避出来た。

/etc/msmtprcを以下のように設定する。

# Set default values for all following accounts.
defaults
port 587
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
syslog on
aliases /etc/aliases

# sendgrid
account sendgrid
host smtp.sendgrid.net
port 587
from [email protected]
set_from_header on
auth on
user apikey
password xxx

# Set a default account
account default : sendgrid

肝はset_from_header on

マニュアルに

If the mail server rejects the mail because its From header does not match the envelope from address (a common anti-spam measure), then you might want to set this option to ‘on’.

とあったので、ダメもとで設定したら上手くいった。

ネット上にも msmtp SendGrid Cron で困っている人なんていなかったので、解決するのに時間かかった。