LoginSignup
0
0

More than 5 years have passed since last update.

postfixとdovecotを使って、macのメールアプリでlocalhostなメールを確認する

Posted at

Web系(に関わらず)をやってるとほぼ必ずでてくるメール関連の実装とかテストとか。
その場合に、ローカル環境で送信テストしたい、と思ってもOBP25Blockingとかあってメール送信が通常出来ない。

OBP25 Blocking
スパムメールとか意図しない大量メールの送信(ウィルス感染などによるものとか)を防ぐため、
一般のプロバイダは会員自前のメールサーバーから外部SMTPサーバーへの接続(ポート25向け)をブロックする。

このため、いくらmacにPostfixを入れようが外部にメール送信はできない。
ここでよく出てくるのはGmailとかを中継させてローカルでも外部にメール送信できるようにする方法。
けどこれって結構手順が多くて大変…
しかもバージョン変われば設定ファイルが変わるときもあるので、さらに煩雑に…

ということで、外部にメール送信をあきらめて、localhost宛のメールのみ扱おうじゃないか、というのが動機。

Postfixをインストールしただけだと、外部メールアドレスに送れないけど、(アカウント名)@localhostというアドレスにはメールが送れる。
(メールアドレスのバリデーションには通らない場合もあるが、それは別の話)
ここでのアカウント名はmacにログインしている(登録されている)ユーザー名を使う。

では送信テスト
(Postfixはbrewとかportとかでインストールしておく、設定は特にいじらない)

mail account_name@localhost
Subject: test mail
body here
.

でターミナルを開くと、「メールが来てるよ」みたいなのが出るはず。
出ていたらmailコマンドでメールを確認しよう。
ちゃんと来ていればOK

Postfixのデフォルト設定だとmbox形式(1つのファイルにいろんなメールが入る)になっているので、これはMaildir形式に変更しておく。

/etc/postfix/main.cf
401 # DELIVERY TO MAILBOX
402 #
403 # The home_mailbox parameter specifies the optional pathname of a
404 # mailbox file relative to a user's home directory. The default
405 # mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
406 # "Maildir/" for qmail-style delivery (the / is required).
407 #
408 #home_mailbox = Mailbox
409 home_mailbox = Maildir/

(バージョンにより場所は異なるので、検索とかで探す)
409行目の設定を加えた。(説明に書いてある通り、スラッシュ必要)

これでPostfixを再起動させれば自分のホームフォルダにMaildirというフォルダができるはず。
(mboxというファイルは使わないので削除でOK)

Postfix側はこれでOK、次はDovecotの設定に移る。
Postfixと同じく、brewやportでDovecotをインストールしておく。
あとインストール後はDovecotの設定ファイルがないので、
/usr/local/Cellar/dovecot/2.3.1/share/doc/dovecot/example-config
のフォルダ(brewの場合、もちろんバージョン値は異なる場合あり)から
dovecot.confconf.dフォルダをまるごと/usr/local/etc/dovecot/にコピーする。

Dovecotの設定はちょっといじる必要あり。
以下

dovecot.conf
# protocols = imap imaps pop3 pop3s
protocols = pop3

まぁどうせローカルだし、popしかいらない、ってことでprotocolsの部分を書き換える。
次はメールの場所の指定

dovecot.conf
mail_location = maildir:~/Maildir

(postfixをmbox形式のままで、DovecotもMbox形式の設定にしてもどうも上手くいかなかった。なのでMaildir形式に変更している)

SSLは使わないので

10-ssl.conf
ssl = no
...
# ssl_cert = </etc/ssl/certs/dovecot.pem
# ssl_key = </etc/ssl/private/dovecot.pem

SSL関係はコメントアウト(ここはdovecotを起動すればエラーと言われる部分なので忘れてても気付く)

Dovecotを動かすユーザー関連

dovecot.conf
default_login_user = _dovenull
default_internal_user = _dovecot

を追記、macだとデーモン系のユーザーは前にアンダーバーがつくそうな。

このままだとmacにあるユーザーアカウント情報でDovecotにログインできないので、もう一手間

conf.d/auth-system.conf.ext
10 passdb {
11   driver = pam
12   # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=<n>]
13   # [cache_key=<key>] [<service name>]
14   #args = dovecot
15   args = login  << 追加
16 }

15行目の部分を追加すればmacのユーザー情報でログインできるそう。

ここまでやればだいたいOK(なはず)

あとはsudo dovecot startで開始。
(launchdとかに登録する方法もあるがこれもややこしいので割愛、というかやってない)

これで問題なく起動していれば、あとはmacのメールアプリでアカウントを追加
アカウント名はログインユーザーで、パスワードはログインパスワード
設定が終われば、ちゃんとメールを受信できるかテストを行う。
問題なければこれで終了。
PCを再起動したりしたときは、dovecot startを忘れないように。

なお、当然ながらusername@localhostというメールアドレスにはgmailとかyahooとか外部のメールからは送信できない。
あくまで、完全ローカル環境のみ有効なアドレスであることをお忘れなく。

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0