m_shige1979のときどきITブログ

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

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

https://github.com/mshige1979

ローカルメールテスト検証

ローカルメールのテスト

メール送信のテストを行う際、外部にメールを送信するわけにはいかないのでローカルでの設定

インストール

postfix
sudo yum install -y postfix
sudo service postfix start
sudo chkconfig postfix on
dovecot
sudo yum install -y dovecot
sudo service dovecot start
sudo chkconfig dovecot on

設定

設定バックアップ
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:

※末尾に追加

作成
sudo postmap /etc/postfix/transport
メール保存先を作成
sudo mkdir -p /usr/local/mail/
sudo chmod 777 /usr/local/mail/
テスト用ユーザーを作成
sudo useradd maildev
sudo passwd maildev
再起動
sudo service postfix reload
dovecot.confのバックアップ
sudo cp -p /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.org
/etc/dovecot/dovecot.conf
protocols = imap pop3
mail_location = maildir:/usr/local/mail/%u

※追加、または変更

確認

telnetを入れてない場合はインストール
sudo yum install -y telnet
テスト
[vagrant@localhost ~]$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix
helo localhost
250 localhost.localdomain
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
aaaaaaaaaa
dddddddddddddd
vvvvvvvvvvvvvvvvv
.
250 2.0.0 Ok: queued as C47341040680
quit
221 2.0.0 Bye
Connection closed by foreign host.
[vagrant@localhost ~]$
[vagrant@localhost ~]$ sudo tree /usr/local/mail/maildev/
/usr/local/mail/maildev/
├── cur
├── new
│   └── 1404902870.Vfd00I440671M543196.localhost.localdomain
└── tmp

3 directories, 1 file
[vagrant@localhost ~]$
確認
[vagrant@localhost ~]$ sudo cat /usr/local/mail/maildev/new/1404902870.Vfd00I440671M543196.localhost.localdomain
Return-Path: <aaaa@test1.com>
X-Original-To: bbb@hoge.com
Delivered-To: bbb@hoge.com
Received: from localhost (localhost [IPv6:::1])
	by localhost.localdomain (Postfix) with SMTP id C47341040680
	for <bbb@hoge.com>; Wed,  9 Jul 2014 10:47:10 +0000 (UTC)
subject: test2
Message-Id: <20140709104728.C47341040680@localhost.localdomain>
Date: Wed,  9 Jul 2014 10:47:10 +0000 (UTC)
From: aaaa@test1.com
To: undisclosed-recipients:;

aaaaaaaaaa
dddddddddddddd
vvvvvvvvvvvvvvvvv
[vagrant@localhost ~]$

phpで送信

testmail.php
<?php

$mail_to = "example@example.com";
$subject = "テストメール";
$mailbody = "
テスト
メール
でした
";
$headers = "From: from@example.com";

if (mb_send_mail(
        $mail_to,
        $subject,
        $mailbody,
        $headers)) {
  echo "メールが送信されました。";
} else {
  echo "メールの送信に失敗しました。";
}

?>
結果
Return-Path: <vagrant@localhost.localdomain>
X-Original-To: example@example.com
Delivered-To: example@example.com
Received: by localhost.localdomain (Postfix, from userid 501)
        id 1F7361040682; Wed,  9 Jul 2014 10:57:44 +0000 (UTC)
To: example@example.com
Subject: =?UTF-8?B?44OG44K544OI44Oh44O844Or?=
X-PHP-Originating-Script: 501:testmail.php
From: from@example.com
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: BASE64
Message-Id: <20140709105744.1F7361040682@localhost.localdomain>
Date: Wed,  9 Jul 2014 10:57:44 +0000 (UTC)

CuODhuOCueODiArjg6Hjg7zjg6sK44Gn44GX44GfCg==

base64の全角部分はなんとかならんかな?

さんだーばーどで参照

f:id:m_shige1979:20140709210153p:plain
f:id:m_shige1979:20140709210203p:plain
※まあ、クライアントで見れたしこれでいいかな