m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

macのpostfixでローカルメールを扱う

eclipseなどで開発する場合は

メールサーバの有無で開発環境に問題が発生しやすい
WindowsMacなどでもメールサーバは未実装の環境が多いので外部にはメールを送信したくないことある

基本的には

m-shige1979.hatenablog.com
これです

postfix

存在チェック
$ which postfix
/usr/sbin/postfix
$

あるのでそのまま

起動
sudo postfix start
設定ファイルバックアップ
sudo cp -p /etc/postfix/main.cf /etc/postfix/main.cf.org
/etc/postfix/main.cf編集
# 全てのメールを受け取る
inet_interfaces = all

# ローカル配送で不明なユーザを拒否しない
local_recipient_maps =

# Maildir形式として保存するディレクトリを /usr/local/mail/ の下にユーザー毎に作成する
mail_spool_directory = /usr/local/mail/

# ローカル配送で不明なユーザへのメールは maildev へ送る
luser_relay = maildev

# トランスポートマップを指定
transport_maps = hash:/etc/postfix/transport

※末尾に追加

/etc/postfix/transport
*       local:

※末尾に追加

postmapで作成
sudo postmap /etc/postfix/transport
メール保存先を準備
sudo mkdir -p /usr/local/mail/
sudo chmod 777 /usr/local/mail/
ユーザーを作成
sudo dscl . -create /Groups/users gid 1001
sudo dscl . -create /Users/maildev
sudo dscl . -create /Users/maildev RealName maildev
sudo dscl . -create /Users/maildev UniqueID 1001
sudo dscl . -create /Users/maildev PrimaryGroupID 1001
sudo dscl . -create /Users/maildev NFSHomeDirectory /Users/maildev
sudo dscl . -create /Users/maildev UserShell /bin/bash
sudo passwd maildev
sudo createhomedir -b -u maildev

※500番台を使用するとシステムが使えなくなる恐れがあるので気をつける必要があります。

リロード
sudo postfix reload

dovecot確認

brew install
$ brew install dovecot
READMEを確認
$ cat /usr/local/etc/dovecot/README
Configuration files go to this directory. See example configuration files in
/usr/local/Cellar/dovecot/2.2.27/share/doc/dovecot/example-config/
$
移動
cp /usr/local/Cellar/dovecot/2.2.27/share/doc/dovecot/example-config/dovecot.conf /usr/local/etc/dovecot/
cp -r /usr/local/Cellar/dovecot/2.2.27/share/doc/dovecot/example-config/conf.d /usr/local/etc/dovecot/
起動
sudo brew services start dovecot
/usr/local/etc/dovecot/dovecot.conf
protocols = imap pop3
mail_location = maildir:/usr/local/mail/%u
再起動
sudo brew services restart dovecot

テスト

$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 matsumotoshigejinoMac-mini.local ESMTP Postfix
helo localhost
250 matsumotoshigejinoMac-mini.local
mail from: aaaa@test1.com
250 2.1.0 Ok
rcpt to: bbb@hoge.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject: test2
aaaaaa
ssssssssss
ddddd
.
250 2.0.0 Ok: queued as 5AA2D4F6580
quit
221 2.0.0 Bye
Connection closed by foreign host.
$
メール確認
$ ll /usr/local/mail/maildev/new/
total 8
-rw-------  1 maildev  601  443  1  7 02:21 1483723300.V1000008I4f6595M15495.matsumotoshigejinoMac-mini.local
$
ソース内容
Return-Path: <aaaa@test1.com>
X-Original-To: bbb@hoge.com
Delivered-To: bbb@hoge.com
Received: from localhost (localhost [IPv6:::1])
	by matsumotoshigejinoMac-mini.local (Postfix) with SMTP id 5AA2D4F6580
	for <bbb@hoge.com>; Sat,  7 Jan 2017 02:21:02 +0900 (JST)
subject: test2
Message-Id: <20170106172111.5AA2D4F6580@matsumotoshigejinoMac-mini.local>
Date: Sat,  7 Jan 2017 02:21:02 +0900 (JST)
From: aaaa@test1.com

aaaaaa
ssssssssss
ddddd

こんな感じ?