Mac の Terminal でメール送信
Mac の Terminal からメールが送れると便利なのでやってみた。
具体的には以下のサイトに従えばいい。
MacでPostfixを使ってlocalhostからメールを送信する方法 – JoyPlotドキュメント
https://joyplot.com/documents/2016/11/07/postfix-send-mail/
迷ったのは /etc/postfix
ディレクトリを見つけることだが、Finder の Go>Go to Folder で /etc/postfix
を指定すればいい。
それと、$ sudo postmap /etc/postfix/authinfo
が Permission Denied になってしまうことについては、postfix ディレクトリを右クリックして Get Info> Sharing & Permissions に自分を加えて、Read & Write にすればいい。
参考:
ローカル環境でメールを送信する作業中 – プログラミング学習帳
http://bayashi.hatenablog.jp/entry/2018/02/01/185348
$ sudo postfix reload
で postfix が走っていないと表示されたので、以下を実行した。
$ sudo postfix start
参考:
MacでGmailのSMTPサーバーを使ってコマンドラインからメールを送れるようにする
https://rcmdnk.com/blog/2013/11/14/computer-mac/
タイトルは -s で指定する。タイトルを "This is a test."、本文を現在時刻としてメールを送るなら、以下のようにする。
$ date | mail -s "This is a test." [送信先メールアドレス]
参考:
Macのコマンドラインからメールを送信する | GATAMIX BLOG
http://www.gatamix.com/article/449733546.html
本文を abc efg、タイトルを test としたメールを送るなら以下。
$ echo "abc efg" | mail -s test [送信先メールアドレス]
(echo ではなく printf でも送れた。)
ただ、送信元を例えば myname@mydomain.com としたいのに、[Mac の自分のユーザー名]@mydomain.com と Mac のユーザー名になってしまう。authinfo ファイルでちゃんと指定しているのに・・・。さらに、送信元の名前も Mac のユーザー名になる(すなわち [Mac のユーザー名] <[Mac の自分のユーザー名]@mydomain.com> だ)。
これを解決する方法を海外のページで見つけた。
Postfix masquerading or changing outgoing SMTP email or mail address – nixCraft
https://www.cyberciti.biz/tips/howto-postfix-masquerade-change-email-mail-address.html
How to change the From header for messages sent by Postfix – 4PSA Knowledge Base – 4PSA Wiki
https://wiki.4psa.com/display/KB/How+to+change+the+From+header+for+messages+sent+by+Postfix
以下に解説しよう。
まずは送信元アドレスを変更する。
(1)/etc/postfix/main.cf に以下の行を追加し、保存。
smtp_generic_maps = hash:/etc/postfix/generic
(2)/etc/postfix/generic に以下の行を追加し、保存(すなわち、変更前と変更後のアドレスを記入する)。
[Mac のユーザー名]@mydomain.com myname@mydomain.com
(3)以下を実行。
$ postmap /etc/postfix/generic
(4)postfix を再起動。
$ sudo postfix reload
これで送信元アドレスを希望のものに変更できた。
次に送信者名を変更する。
(5)/etc/postfix/header_checks に以下を追記、保存する。
/^From:[[:space:]]+(.*)/ REPLACE From: "[送信者名]" <myname@mydomain.com>
(6)以下を実行。
$ cd /etc/postfix
$ postmap header_checks
$ postconf -e 'smtp_header_checks = regexp:/etc/postfix/header_checks'
$ sudo postfix reload
これで送信者名も変更できた。