昔、メールサーバーを管理していた時から使ってた Perl で書いた smtp クライアントがどこに行ったかわからなくなったけど、確か mailx コマンドで出来るっぽかったなということで試してみた。他にも github に何か便利そうなツールがあった気がするけど探し出せない…
試した環境は AmazonLinux 2 です。mailx コマンドは mailx というパッケージに入っています。
$ rpm -qf $(which mailx) mailx-12.5-19.amzn2.x86_64
Google アカウントで SMTP サーバーを使ってメールを送る方法は「プリンタ、スキャナ、アプリからのメール送信」にあります。
送信方法は次の通り。465/tcp の SMTP over SSL/TLS には非対応かな。
echo メッセージ本文 \ | mailx -n -v \ -S smtp=smtp.gmail.com:587 \ -S smtp-auth=plain \ -S smtp-auth-user=username@gmail.com \ -S smtp-auth-password=アプリパスワード\ -S smtp-use-starttls \ -S ssl-verify=ignore \ -S nss-config-dir=/etc/pki/nssdb \ -S from="表示名 <username@gmail.com>" \ -s "サブジェクト" \ -c CCメールアドレス \ -b BCCメールアドレス -a 添付ファイルのpath \ 宛先メールアドレス
日本語など us-ascii 外のバイト列が含まれる場合は自動で charset を utf-8 にしてくれますし、添付ファイルの Content-Type もバイナリなら octet-stream になるし、テキストファイルなら text/plain になります。ヘッダー内の非 ascii は utf-8 の Base64 encode にしてくれます。ステキ。
アプリパスワードについては「アプリ パスワードでログイン」を参照
smtp.gmail.com の EHLO のレスポンスです。通常の SMTP サーバーでは見かけない認証に対応してますね。
250-smtp.gmail.com at your service, [203.0.113.10] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8