それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

mac で sendmail コマンドを動かす。

sendmailgmailSMTPを使う。

mac には 最初から postfix が入っているので、 postfix を使うのが手っ取り早い

postfix を使ってSMTPリレーをし、GmailSMTPサーバーに接続する。

sasl password ファイルを用意する

takuya@mail$ sudo -e  /etc/postfix/sasl_passwd

/etc/postfix/sasl_passwd

smtp.gmail.com:587 youname@gmail.com:your_password

main.cf の作成

私の環境では、なぜか、main.cf が空っぽのファイルになっていたので、デフォルトを取り出します。

sudo cp  /etc/postfix/main.cf~orig /etc/postfix/main.cf

postmap の実行

postmap をつかって、パスワードをdb に登録します。

sudo postmap /etc/postfix/sasl_passwd

main.cf でリレーを設定します。

main.cf を開いて、末尾に追記します。

# Apple Defaults
#
message_size_limit = 10485760
mailbox_size_limit = 0
biff = no
mynetworks = 127.0.0.0/8, [::1]/128
smtpd_client_restrictions = permit_mynetworks permit_sasl_authenticated permit
recipient_delimiter = +
tls_random_source = dev:/dev/urandom
smtpd_tls_ciphers = medium
#### ここから追記
## gmail へのリレー設定

relayhost=smtp.gmail.com:587
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_use_tls=yes
smtp_tls_security_level=encrypt
tls_random_source=dev:/dev/urandom
smtp_sasl_security_options = noanonymous
smtp_always_send_ehlo = yes
smtp_sasl_mechanism_filter = plain

postfix の実行

設定ができたので、postfixを起動します。

sudo postfix start

起動を確認しておきます。

takuya@mail$ ps aux | grep postfix
321:_postfix          9807   0.0  0.0  4305160   4004   ??  S     4:32AM   0:00.03 tlsmgr -l -t unix -u
325:_postfix          9461   0.0  0.0  4324644   4092   ??  S     4:28AM   0:00.04 qmgr -l -t fifo -u
326:_postfix          9460   0.0  0.0  4332788   4036   ??  S     4:28AM   0:00.03 pickup -l -t fifo -u -o content_filter=
327:root              9459   0.0  0.0  4297908    560   ??  Ss    4:28AM   0:00.03 /usr/libexec/postfix/master -w

終了するときは、 

sudo postfix stop

sendmail コマンドでテストメールを送信します。

サンプル用のメールを作成します。 sample-mail.txt

To:takuya@example.com
Subject: HELLO , from test



Hi, can you see my mail?

sendmail コマンドで送信します。

cat sample-mail.txt | sendmail -i -t

メールの受信を確認します。

無事に届けばOKです。

注意点

幾つか、気にしておく点をメモしておきます。

ポート開けっ放し?

postfix を常時動かすのはセキュリティ的に怖いのですが。使うときだけ起動できるので、それで妥協する。

sendmail コマンドとを互換性を持った別のコマンドを作ってもいいんですけど。作るのはめんどくさすぎるので

使うときのみ postfix を起動し使い終わったら終了するようにしておく。

また、smtp のリレーを localhost ( ::1 / 127.0.0.1 ) に限定するのも一つの手段です。

GmailSMTPを使うために

GmailSMTPは「安全性の低いアプリ」などと呼称されている 。安全性の低いアプリ( less secure apps ) をオンにしないとSMTP経由でメールが送れないかもしれない。

最近は、SMTPだけは開放されているようです。以前はこれをONにしないとSMTPが使えなかった。

指定するGoogleSMTP(s)のポートによっては使えない可能性が高い。