Mac で開発用の SMTP サーバーを起動するまでのメモ

By | 2011年8月17日

Macで開発用SMTPサーバをたてたい!
を参考にして snow leopard でやってみた。

これで送信できるとのことなので試すと下記エラーがでていて送信できなかった

$postfix start
$mail dealforest@dealforest.net
 
Aug 16 20:05:56 dealforest-MBP-2 postfix[5026]: error: to submit mail, use the Postfix sendmail command
Aug 16 20:05:56 dealforest-MBP-2 postfix[5026]: fatal: the postfix command is reserved for the superuser

実行権限的な問題かなと思って sudo をつけて再度ためす

$sudo postfix start
$mail dealforest@dealforest.net
 
fatal: open lock file pid/master.pid: unable to set exclusive lock: Resource temporarily unavailable

ログを見ていると上記のようなエラーがを発見
どっかしらないとこで起動してるのかと思って launchd を調べてみた

sudo launchctl list | grep postfix

sudo をつけないと org.postfix.master でてこなくて少し悩んだ。
対処方法はここにあるように plist をいじるのもいいって自分で postfix を起動させる方法でもいいんだけど、それも気持ち悪いので launchd をそのまま使うことにした。

$sudo launchctl start org.postfix.master  [起動]
$sudo launchctl stop org.postfix.master  [停止]

設定ファイルは /etc/postfix/master.cf にあります。

とりあえずこれで送信できるようになりましたとさ。

OP25B 対策で Postfix を SMTP クライアントとして SASL 認証する(Biglobe)

By | 2008年11月16日

概要

そもそも OP25B(Outbound Port25 Blocking) ってのはなんなのか??をざっくり説明すると
25番ポートから出て行くメールは必ず ISP の SMTP サーバを通過しないと駄目だという決まり。
これは ISP によって対応してたりしてなかったりする。
詳細はここを見て下さい。
各 ISP 対応一覧で自分が使ってる ISP の状況を確認しとけば大丈夫。
不運にも該当した方は自宅メールサーバーから外へむけて(会社, gmail, hotmail等)にむけてメールを送信することができません。
ただし同一 ISP 間の場合はメール送信ができました。

以下に設定のやり方を書いてきます。
家の ISP が Biglobe のため Biglobe 以外はわかりません。あしからず。

設定

まず、Postfix の設定はすんでいることが前提です。
することは大きくわけて3つあります。
1. Biglobe 中継用の SMTP サーバの取得
2.postfix の設定
3.SASL 認証用の passwd ファイル作成
を順番にしていきます。

Biglobe 中継用の SMTP サーバの取得

ここにいき利用申込をします。
これはすぐに発行してもらえるため時間はくいません。
ここで発行してもらった SMTP サーバとポートは重要なのでメモなり、印刷することをオススメします。

postfix の設定

発行してもらった SMTP サーバを Postfx の relayhost に設定します。
あと、SASL(Simple Authentication and Security Layer) 認証の設定です。

説明のため、

SMTP サーバー((1)で入手したやつ)を hoge.biglobe.ne.jp
メールアドレス(Biglobe から発行されたやつ)を fuga@xxx.biglobe.ne.jp
パスワード(Biglobe から発行されたやつ)を  foo

とします。

#メール送信時に Biglobe の SMTP サーバーにむけて送信
relayhost = [hoge.biglobe.ne.jp]:25
 
#SASL 認証の設定
smtp_sasl_type = cyrus
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

SASL 認証用の passwd ファイル作成

#/etc/postfix/sasl_passwd
[hoge.biglobe.ne.jp]:25 fuga@xxx.biglobe.ne.jp:foo

上記のように認証用のファイルを作成し、それを Postfix に指定させればよい。
パーミッションは root で 600 にしておく。

postmap /etc/postfix/sasl_passwd

これで /etc/postfix/sasl_passwd.db ってのができればおk。
あとは再起動をすればメール送信ができるようになってます。

送信時のError Code

530 Need AUTH before MAIL (in reply to MAIL FROM command)
メール送信時に中継サーバに対してSASL認証をしてい。/etc/postfix/main.cf の設定に問題がありそう。

500 authentication failed
中継サーバの認証に失敗してる。/etc/postfix/sasl_passwd あたりが問題ありそう。

参考文献

SASL(シンプル認証とセキュリティ層)(Simple Authentication and Security Layer (SASL))
Postfix+SMTP-AUTHでメールをプロバイダに中継
OP25B(Outbound Port 25 Blocking)対策