レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

maildropを使ってメール受信時に携帯へのお知らせメールを自動送信してみる

2013年8月30日 2014年1月8日
メール通知

以下の記事では、maildropのインストールおよび簡単な使い方について解説してきました。

今回は、maildropを使って、メール着信があったら 携帯メールへお知らせメールを自動送信してみます。

maildropとは、
Courier Mail Serverによって使用されるMDA(Mail Delivery Agent) です。maildrop は、MDA(Mail Delivery Agent)の機能のほかに、フィルター機能を有しています。 maildropは、stdin(標準入力)からメールを受信し、Maildir、mboxのいずれの形式にも配信します。
maildropは、メンテナンスされていないprocmailのMDAに代わるものとして提案されています。
MDAとは、
メール配送エージェント(Mail Delivery Agent、MDA)で、メールサーバの中で、メール転送エージェント(MTA)によって振り分けられた電子メールを受信者に配送する機能のこと言います。

(Wikipedea 原文)
maildrop is a Mail delivery agent used by the Courier Mail Server. The maildrop MDA also includes filtering functionality. maildrop receives mail via stdin and delivers in both Maildir and mbox formats.
maildrop has been suggested as an alternative to the unmaintained procmail MDA.

maildropを使ってメール受信時に携帯へのお知らせメールを自動送信してみる

procmailの代わりにmaildropを使ってみる(メールの振り分けから自動応答(返信)まで) でも書きましたが、 maildropは、maildrop独自のスクリプトファイルによって指示されたメールの振り分けを行います。
そのファイルは、以下のとおりで、maildropが読み込む順番の下記のとおりです。


  1. /etc/maildroprc

    → このファイルは、サーバーで受信したすべてのメールに対していmaidropの指示を指定します。

  2. ($HOME)/.mailfilter

    → このファイルは、ユーザのホームディレクトリに設置され、そのユーザ宛のメールに対してmaidropの指示を指定します。


ここでは、ユーザのホームディレクトリに設置される .mailfilter を編集して、お知らせメールを自動送信してみます。

簡単なお知らせメールの設定例

ユーザのホームディレクトリに設置される .mailfilterを使った簡単なお知らせメールの設定例を以下に解説してみます。


.mailfilterの例

1
2
3
4
if (/^To:\s*.*(hoge@example\.com)\s*/:h )
{
    cc "| echo -e 'From: oshirase@example.com\nTo: keitai@docomo.ne.jp\nSubject: You got a mail\nYou got a mail.\n.\n' | /usr/sbin/sendmail -t"
}
1行目
正規表現を使ってヘッダ情報から hoge@example.com 宛(To) のメールか否かを判断しています。
3行目
hoge@example.com 宛(To) のメールの場合は、メールをコピーして、|(パイプ)以降のコマンドを実行します。
ここでは、 sendmail コマンドを使って、英語で You got a mail のタイトル、本文を 差出人 : oshirase@example.com 、受信者 : keitai@docomo.ne.jp へ送信するようにしています。

この設定だと、hoge@example.com 宛へのメールを受信した場合、
keitai@docomo.ne.jp へ “You got a mail” というメッセージが oshirase@example.com を差出人として送信されます。
非常に簡単なメッセージです。これで良ければ、上記の設定で完了になります。

ただ、やっぱり、誰からのメールかぐらいは、メッセージに編集して送信したいですね。さらには、日本語で出力したいとも思います。 そうなってくると上記のように単純に1行では済みそうもありません。

以降に簡単に解説してみます。


日本語でのお知らせメールの設定例

先と同様にユーザのホームディレクトリに設置される .mailfilterを使って日本語のお知らせメールの設定例を以下に解説してみます。

ただ、今回は、日本語への対応処理が入ってくるので、処理が多少複雑になります。
.mailfilterでごちゃごちゃと書けなくもないですが、シェルスクリプトファイルを別途作成して、そちらでお知らせメールを送信することにしましょう。

ここでは、そのシェルスクリプトファイル名を mail-info.sh とします。 同じ ユーザのホームディレクトリに設置するものとします。

.mailfilterの例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (/^To:\s*.*(hoge@example\.com)\s*/:h )
{
	# 着信者メールアドレスをヘッダ情報から取り出す
	ADDR=getaddr($MATCH1)
	ADDR_SIZE=length($ADDR)
	ADDR_SIZE=`expr $ADDR_SIZE - 1`
	ADDR_TO=substr($ADDR,0,$ADDR_SIZE)
	
	# 送信者メールアドレスをヘッダ情報から取り出す
	/^From:\s*(.*)/:h
	ADDR=getaddr($MATCH1)
	ADDR_SIZE=length($ADDR)
	ADDR_SIZE=`expr $ADDR_SIZE - 1`
	ADDR_FROM=substr($ADDR,0,$ADDR_SIZE)
	
	# メールを送信する
	cc "| /bin/sh $HOME/mail-info.sh $ADDR_FROM $ADDR_TO"
}
1行目
正規表現を使ってヘッダ情報から hoge@example.com 宛(To) のメールか否かを判断しています。
3行目 – 7行目
先にif分で正規表現を使ってマッチしたメールアドレス情報(括弧”()”の中) をアドレス情報のみに編集しています。
getaddr : 文字列からメールアドレスのみを抽出します。最後に改行が付加されます。
そのあと、最後に付加された改行を削除しています。
9行目 – 14行目
10行目の正規表現で差出人のメールアドレスを抽出しています。
次に、getaddr : 文字列からメールアドレスのみを抽出します。最後に改行が付加されます。
そのあと、最後に付加された改行を削除しています。
16行目 – 17行目
hoge@example.com 宛(To) のメールの場合は、メールをコピーして、|(パイプ)以降のコマンドを実行します。
ここでは、 mail-info.sh を shコマンドで実行します。 その際のパラメータとして、 差出人メールアドレス : $ADDR_FROM 、 受信者メールアドレス : $ADDR_TO を指定しています。

mail-info.shの例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/sh

# メール情報設定
#   $1:from メールアドレス
#   $2:to メールアドレス
from="oshirase@example.com"
to="keitai@docomo.ne.jp"
subject="${1} さんからメールが着ました"
contents="${1} さんから ${2} さんへメールが着たようです。"

# Subject設定
#   UTF8 -> iso-2022-jp
subject_h="=?iso-2022-jp?B?"
subject_b="`echo "$subject" | iconv -f utf-8 -t iso-2022-jp | base64 | tr -d '\n'`"
subject_t="?="

# Contents設定
#   UTF8 -> iso-2022-jp
contents_jp="`echo $contents | iconv -f utf-8 -t iso-2022-jp`"

# メール送信
echo "From: ${from}\nTo: ${to}\nSubject: ${subject_h}${subject_b}${subject_t}\n${contents_jp}\n.\n" | /usr/sbin/sendmail -t
if [ $? -eq 0 ]
then
	echo "send mail success"
	exit 0
else
	echo "send mail failure"
	exit 1
fi
6行目
お知らせメールの差出人メールアドレスを指定しています。
7行目
お知らせメールの受信者メールアドレスを指定しています。
8行目
Subject(メールタイトル)を 受信メールの差出人メールアドレス($1:第一パラメータ)を元に編集しています。
9行目
Contents(メール本文)を 受信メールの差出人メールアドレス($1:第一パラメータ)、受信者メールアドレス($2:第二パラメータ)を元に編集しています。
13行目 – 15行目
Subject(メールタイトル)をメールの文字コードに合わせて変換しています。
(ここでのスクリプトは、UTF8で記述されているものとしています。)
19行目
Contents(メール本文)をメールの文字コードに合わせて変換しています。
(ここでのスクリプトは、UTF8で記述されているものとしています。)
22行目
ここで、sendmail コマンドを使ってメールを送信しています。
上記のスクリプトを実行するには、iconv、base64、tr、sendmail コマンドは、あらかじめインストールされておく必要があります。

また、ここでは、sendmailコマンドを使ってお知らせメールを配信しましたが、一般的に使われている mail コマンドでも同じようにできます。 ただ、 mail コマンドの引数は、Linuxのディストリビューションによって異なるために、ここでは、sendmailコマンドを使っています。
mail コマンドに慣れている方は、そちらでメール送信するのも良いと思います。

最初のmaildropの設定で、送受信者のメールアドレスを抽出しているのが、まどろっこしいですが、やっていることは文字列から抽出して、改行を消去しているだけです。
また、わかりやすいように、くどいぐらい一行一行処理を分けて書いています。
そのため、ちょっと行数が多くなったので、複雑に思われるかもしれませんが、文字コードを変換してsendmailでメール送信しているだけですから、 落ち着いて、見られれば、そんなに難しくはないと思います。


ここでは、maildrop側で送受信者のメールアドレスを抽出していますが、 シェルスクリプト内でSTDIN から、メールは読み込めますから、スクリプト内ですべてを処理することもできます。

一応、maildrop側でもできますよ・・・というところを見せたかっただけです。

これでパソコンを起動せずとも、メールの受信チェックぐらいは携帯でできますね。お試しあれ。

ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

procmailの代わりにmaildropを使ってみる(メールの振り分けから自動応答(返信)まで)

以下の記事では、maildropのインストールについて解説してみました。 procmailの代わりに(rpmを作成して)maild ...

procmailの代わりに(rpmを作成して)maildropをインストールする(RPM編)

procmailでメールボックスのパーミッションが660になってしまう対処について調べてみた でも指摘したように、procmailには、メンテナ ...

procmailの代わりに(makeを使って)maildropをインストールする(make編)

procmailの代わりに(rpmを作成して)maildropをインストールする(RPM編) では、CentOS/Scientific Linu ...

sendmail設定(1)必要最小限の設定で使ってみる

以前の記事 sendmailを使って内部メールをgmailへ転送する では、SendMailのインストールと、SendMailを使ったメールのG ...

CentOS(Scientific Linux)で postfix を使ってみる

Debian(Ubuntu)で postfix を使ってみる では、Debian/UbuntuへのPostfixの対応について書きました。 ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2515 [s]