さくらインターネットさんのレンタルサーバーを経由してメールを送信する方法

この記事は公開されてから時間が経っています

今回、社内で評価用に立てていたサーバーで、取り急ぎブログを利用してもらう事になりました
テーマの作成や、プラグインの評価などに使っていた WordPress がマルチサイトの設定になっていますので、そこにサブディレクトリを用意して利用してもらう事になりました

成り行き

そこまでは、別に良いのですが、メールなどの送信は出来ないか?と言われてしまいました
bbPress などを利用できるように設定しましたので、メールでの通知などが利用できると便利です

これまでは、社内に便利に使える MTA があったのですが、今回はさくらインターネットさんのレンタルサーバーをリレーしてメールが送信できないか試してみました

ついでに言うと、BuddyPress と言う物を評価していたので、こちらでもメールで通知がされてくるととっても便利です

これまで、余り社内のメールに関する設定などは行ってきていませんでしたので、忘れないうちに記録しておこう!と思ったので書いておきます

サーバ

ちょっと古いのですが、VMware vSphere にテーマの確認やプラグインの評価などに何時もは眠らせている Ubuntu 14.04.5 LTS のLAMP 環境です
( PHP は 2.5 など古いのですが、社内専用で、しかも、自分でしか使わないので、ほぼメンテしていない)

ここに、マルチサイトの設定をしてある WordPress (此れは最新) に、サイトを一つ用意して、bbPress で掲示板を用意しました
また、これとは別に BuddyPress を評価していました

この両方とも、メールで書き込みの通知などを行えると便利なので、メールを送信だけ出来る様に設定しようと目論みました

MTA

べつに管理している人が居るので、MTA の設定はあまりしていませんが、十年くらい前に sendmail から postfix へ置き換えた事があったので、postfix をUbuntu へ追加して設定してみました
※ 社内のメールはさくらインターネットさんのレンタルサーバーで管理していますので、特に何か設定する事はありません

通常通り、aptitude で postfix だけ追加しました
mailutils は追加しませんでした(受信する予定はないので…)

main.cf

インストール時に用意されていた main.cf は、バックアップして書き直しました
書き直した結果は、こんな感じです(晒しても良いのだろうか?)

relayhost = [XXXXXXXX.co.jp]:587
 
myhostname = XXXXXXXX.co.jp
mydomain = XXXXXXXX.co.jp
myorigin = $mydomain
append_at_myorigin = yes
append_dot_mydomain = yes
inet_interfaces = localhost
inet_protocols = ipv4
mydestination = localhost
mynetworks = 127.0.0.1
 
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/relay_password
smtp_sasl_security_options = noanonymous
 
sender_canonical_maps = hash:/etc/postfix/canonical

 

こんな感じでイケました
※ 動いただけですので、正しいか?と言えば怪しいです

relayhost は、さくらさんのサーバーのアドレスですね

relay_password

あと、リレー用のパスワードですが、/etc/postfix に、relay_password と言うファイルを用意して、規定の書式でログインできるアドレスとパスワードを記入して、コマンドでデータベース化します

root@ubuntuWordPress:/etc/postfix# cat relay_password
[XXXXXXXX.co.jp]:587 alfresco@XXXXXXXX.co.jp:YYYYYYYY
[XXXXXXXXXXXX.sakura.ne.jp]:587 alfresco@XXXXXXXX.co.jp:YYYYYYYY
 

一応、初期サーバー名と追加したドメイン名の二つを書いておきました
Alfresco のテスト用に用意したアカウントを使っています(使用頻度が低いので ^^;)
最初に出てくる行の方が優先らしいです

postmap コマンドで、データベース化します
これで、service postfix restart などで、再起動して sendmail コマンドでメールを送信してみます

root@ubuntuWordPress: ~# sendmail st@XXXXXXXX.co.jp
To: YYYYYYYY@XXXXXXXX.co.jp
Subject: test
 
 
test
.

こんな感じでメールが送信できたか確認します

Return-Path: <root@XXXXXXXX.co.jp>
Received: from fsavXXX.sakura.ne.jp (fsavXXX.sakura.ne.jp [XXX.XXX.XXX.XXX])
by wwwXXXX.sakura.ne.jp (8.14.5/8.14.5) with ESMTP id w491ngXXXXXXXX
for <st@XXXXXXXX.co.jp>; Wed, 9 May 2018 10:49:42 +0900 (JST)
(envelope-from root@XXXXXXXX.co.jp)
Received: from wwwXXXX.sakura.ne.jp (XXX.XXX.XXX.XXX)
by fsavXXX.sakura.ne.jp (F-Secure/fsigk_smtp/530/fsavXXX.sakura.ne.jp);
Wed, 09 May 2018 10:49:42 +0900 (JST)
X-Virus-Status: clean(F-Secure/fsigk_smtp/530/fsavXXX.sakura.ne.jp)
Received: from XXXXXXXX.co.jp (nttkyoXXXXX.XXXX.XX.XXX.XXX.infoweb.ne.jp [XXX.XXX.XXX.XXX])
(authenticated bits=0)
by wwwXXXX.sakura.ne.jp (8.14.5/8.14.5) with ESMTP id w491ngXXXXXXXX
for <st@XXXXXXXX.co.jp>; Wed, 9 May 2018 10:49:42 +0900 (JST)
(envelope-from root@XXXXXXXX.co.jp)
Received: by XXXXXXXX.co.jp (Postfix, from userid 0)
id 5CBBB2XXX; Wed, 9 May 2018 10:49:41 +0900 (JST)
From: YYYYYYYY@XXXXXXXX.co.jp
Subject: test 2
Message-Id: <20180509014941.XXXXXXXXX@XXXXXXXX.co.jp>
Date: Wed, 9 May 2018 10:49:17 +0900 (JST)
To: undisclosed-recipients:;
 
test
.

一応、送信できているようです

canonical

ちょっと、Return-Path が気になりますので、調べてみたら canonical と言うファイルと設定すると変更できる事が解りました

ここでは、root で sendmail コマンドを実行しましたので root@XXXXXXXX.co.jp が return-path に設定されています
また、WordPress などから送信すると、apache で実行されますのでユーザー名の www-data が設置されて送信されてきます

特に問題ないですが、返信先がそこになってしまいますので、この二つのユーザー名だけ return-path を設定してみました

root@ubuntuWordPress:/etc/postfix# cat canonical
www-data st@XXXXXXXX.co.jp
root st@XXXXXXXX.co.jp

こんな感じで、変換したいユーザー名と return-path に割り当てるアドレスを書き込んで、
postmap コマンドでデータベース化します

また、この後 postfix を再起動して、もう一度、sendmail コマンドを実行してみます

Return-Path: <st@XXXXXXXX.co.jp>
Received: from fsavXXX.sakura.ne.jp (fsavXXX.sakura.ne.jp [XXX.XXX.XXX.XXX])
by wwwXXXX.sakura.ne.jp (8.14.5/8.14.5) with ESMTP id w492loXXXXXXXX
for <st@XXXXXXXX.co.jp>; Wed, 9 May 2018 11:47:50 +0900 (JST)
(envelope-from st@XXXXXXXX.co.jp)
Received: from wwwXXXX.sakura.ne.jp (XXX.XXX.XXX.XXX)
by fsavXXX.sakura.ne.jp (F-Secure/fsigk_smtp/530/fsavXXX.sakura.ne.jp);
Wed, 09 May 2018 11:47:50 +0900 (JST)
X-Virus-Status: clean(F-Secure/fsigk_smtp/530/fsavXXX.sakura.ne.jp)
Received: from XXXXXXXX.co.jp (nttkyoXXXXXX.XXXX.XX.XX.XXX.infoweb.ne.jp [XXX.XXX.XXX.XXX])
(authenticated bits=0)
by wwwXXXX.sakura.ne.jp (8.14.5/8.14.5) with ESMTP id w492lnXXXXXXXX
for <st@XXXXXXXX.co.jp>; Wed, 9 May 2018 11:47:49 +0900 (JST)
(envelope-from st@XXXXXXXX.co.jp)
Received: by XXXXXXXX.co.jp (Postfix, from userid 0)
id A7DXXXXXX; Wed, 9 May 2018 11:47:48 +0900 (JST)
To: YYYYYYYY@XXXXXXXX.co.jp
Subject: test
Message-Id: <20180509024748.A7D702E6A@XXXXXXXX.co.jp>
Date: Wed, 9 May 2018 11:47:08 +0900 (JST)
From: st@XXXXXXXX.co.jp (root)
 
return-path check
.

こんな感じです
Return-Path が root では無くなりました(ユーザー名は root ですね ^^;)

文字コード

設定できましたので、BuddyPress からのメールを確認してみました
アクティビティなどに返信があると通知されてきます

最初は BuddyPress の日本語が上手ではないのかな?と思ったのですが、
WP Multibyte Patch の設定で文字化けが直るそうです

ダッシュボードのプラグインの所から、「詳しい説明」をたどって行くと、メール送信 のエンコードに関して記載があります
デフォルトでは設定ファイルはサンプルのままになっていますので、メールの設定だけして規定のディレクトリに設定ファイルを格納すれば良いようです


/**
* wp_mail() の文字エンコーディング
*
* この設定は WordPress から wp_mail() を通して送信されるメールに適用されます。
* 指定可能な値は、'JIS'、'UTF-8'、'auto' です。
* この設定は $wpmp_conf['patch_wp_mail'] が false の場合は無効となります。
*/
$wpmp_conf['mail_mode'] = 'UTF-8';

こんな感じに plugin のディレクトリーの wp-multibyte-patch ディレクトリの
wpmp-config-sample-ja.php を書き換えて、wp-content ディレクトリーにコピーします
設定ファイルの格納フォルダーに注意しましょう!

こんな感じで今の所は動いています..

,

追記

2018-05-31

この作戦は Ubuntu 18.04 LTS でも上手く行きました
それと、relay_host と canonical を書き換えたら、postmap コマンドで、repay_host.db と
canonical.db を作成します
postmap relay_host
postmap canonical

って感じで実行します

最初、nullmailer でテストして見たんですが、宛先を変える方法が解らず断念しました
宛先を指定する方法が解れば nullmailer の方がカンタンだと思います
時間が有ったら調べてみて! > 自分!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


The reCAPTCHA verification period has expired. Please reload the page.