Mac OS X (Mountain Lion)で、Postfix(sendmail)の設定を行いコマンドからgmail/icloudアドレスでメールを送る

OS X Mountain Lion にてローカルの sendmail (postfix )を利用できるように設定をしたのでメモをしておきます。Postfixなんてなつかし〜と思いながら結構つまづいています。

Medium 19705415

まず、いくつか設定を行わないとそもそも動作しないので postfix の構成から行います。これらを正しくしていないといくつかエラーがが発生するので注意が必要です。上手く送信されていないなと思ったりした場合には /var/log/mail.log 等を参考に直していく事になります。

Step 1

まず始めに、Postfixの設定を修正します。これを実施しない場合には

sendmail: fatal: chdir /Library/Server/Mail/Data/spool: No such file or directory

というエラーが表示されます。


sudo mkdir -p /Library/Server/Mail/Data/spool
sudo /usr/sbin/postfix set-permissions
sudo /usr/sbin/postfix start

さらに警告が出てくると思われるので以下おコマンドを実行する。また構成のチェック等は postfix check を行う事で確認する事も出来るので覚えておきましょう。


sudo chmod g-w /Library/Server/Mail/Data/mta
sudo postfix check
sudo postfix reload

Step 2

次に、送信するメール(リレー)サーバの設定を行います。これにはgmailやme.com等を利用すると良いかと思います。MacOSX 常時のメールサーバにする場合にはまた別の設定になりますのでここでは取り扱いません。普通のメールクライアントの様な利用法を想定します。設定は全て /etc/postfix/main.cf に記載されます。



# Gmail
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
tls_random_source=dev:/dev/urandom



# mail.me.com
relayhost = [smtp.mail.me.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
tls_random_source=dev:/dev/urandom

★ iCloud:メールサーバの情報

上記は gmail.com と me.com の例を掲載しています、実際にはどちらか一方の設定を記載するようにしておきます。変更した後には上記のStep1同様にcheck / reload をしておきましょう。

Step 3

上記の設定でメールのユーザ管理には sasl (Simple Authentication and Security Layer )を利用するという定義になっているのでこれに必要な処理を行います。これはユーザのパスワード等を記載した物になります。


vi /tmp/sasl_passwd

等のコマンドでファイルを作成します。内容は gmail / me.com に応じてサーバの箇所を変更して以下のように記載します。


[smtp.gmail.com]:587 [email protected]:

上記のファイルにたいして暗号化を行い、定義された場所(/etc/postfix/)に移動します。元のファイルは不要ですので消すかパスワードの箇所を削除しておきましょう


postmap /tmp/sasl_passwd
cp -p /tmp/sasl_passwd.db /etc/postfix/sasl_passwd.db
postfix check
psotfix reload

ファイル名等は間違いないようにしましょう。

Step 4

次に実際にメールを送付してみましょう。以下の様なテキストを作成して sendmail コマンドで発行しても良いですし mailコマンドで実施しても良いでしょう。


from: [email protected]
To: [email protected]
Subject: test
Content-Type: text/plain; charset=iso-2022-jp

TEST

の用な物を aaa.txt に記載しておき

sendmail -t < aaa.txt

という感じで送付する事が出来ます。

Step5

実際に送信してみると上手く動作しない場合等があるかもしれません、postfix は多く管理用のコマンドを持っているので調査する事が出来ます。

  • キューの確認 : mailq
  • キューの強制的な採草 : psotqueue -f

等でまずは調べてみましょう。送信されていないようであれば /var/log/mail.log に解決の糸口があるかもしれません。実際には Mountain Lion 特有の問題ではないのかもしれませんのでググれば糸口は結構見つかると思います。

実際に何のために設定したかと言えば、普段コマンド環境で tmux を利用しているのですがコンソールの画面の内容をさっとメールで送ったりする事が出来るので結構便利に使う事が出来るようになるのです。その際に送信先を evernote のアドレス等にしておくと結構便利に情報を集める事が出来るので助かります。



One thought on “Mac OS X (Mountain Lion)で、Postfix(sendmail)の設定を行いコマンドからgmail/icloudアドレスでメールを送る”

  1. 非常に参考になりました!ありがとうございます!

    お礼と言ってはおこがましいですが、タイポなどのご連絡です。
    ・Step3の”psotfix reload” コマンドのsとoが逆です。
    ・Step4の<記号が正しく表示されていないようです。
    ・私の環境ではMervericksでは問題なく実施できましたが、Mountain Lionではset-permissionsの前に、下記の様にmanファイルを一部zip化する必要がありました。

    sudo gzip /usr/share/man/man1/{postalias.1,postcat.1,postconf.1,postdrop.1,postfix.1,postkick.1,postlock.1,postlog.1,postmap.1,postmulti.1,postqueue.1,postsuper.1,sendmail.1}
    sudo gzip /usr/share/man/man5/{access.5,aliases.5,bounce.5,canonical.5,cidr_table.5,generic.5,header_checks.5,ldap_table.5,master.5,mysql_table.5,nisplus_table.5,pcre_table.5,pgsql_table.5,postconf.5,postfix-wrapper.5,regexp_table.5,relocated.5,tcp_table.5,transport.5,virtual.5}
    sudo gzip /usr/share/man/man8/{anvil.8,bounce.8,cleanup.8,discard.8,error.8,flush.8,local.8,master.8,oqmgr.8,pickup.8,pipe.8,proxymap.8,qmgr.8,qmqpd.8,scache.8,showq.8,smtp.8,smtpd.8,spawn.8,tlsmgr.8,trivial-rewrite.8,verify.8,virtual.8}

コメントを残す

Created by roguer.info 2016