Linux 上に構築したメールサーバで、メール受信をトリガにして処理を実行する手順等についての記録です。
処理は Ruby で行うことを想定しています。(多くのサイト等では Perl や PHP での処理がよく紹介されてます)
0. 前提条件
- Debian GNU/Linux 8.1 での作業を想定。
- Ruby 2.2.2-95 での作業を想定。
- SMTP サーバ Postfix 構築済み。
- POP/IMAP サーバ Dovecot 構築済み。
- Postfix の aliases (メール転送機能)と連携をとる方法を想定。
- 処理対象のユーザ・グループは “test”, “test” を想定。
1. Ruby スクリプトの作成
以下のような Ruby スクリプトを作成する。
(紹介用に受信したメールを解析してテキストファイルに保存するだけのプログラム)
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 31 |
|
2. Ruby スクリプトの配置
作成した Ruby スクリプトをサーバ上の適当な位置に配置する。
(今回、当方は処理を行いたいユーザの home ディレクトリ “/home/test” 直下に配置した(所有者 “test” で))
配置後、実行権限を付与する。
1
|
|
3. メール保存用ディレクトリの作成
今回の処理で使用するディレクトリをサーバ上の適当な位置に作成する。
(今回、当方は処理を行いたいユーザの home ディレクトリ “/home/test” 配下に “get_mail” ディレクトリを作成した(所有者 “test” で))
4. Postfix の aliases 設定
1
|
|
ちなみに、処理を行う他に転送も行いたい場合は、以下のようにカンマで区切ればよい。
1
|
|
5. include ファイル(実行コマンド)の作成
1
|
|
そして、このファイルの所有者が “test” でなければ “test” にする。
1
|
|
6. Postfix 設定ファイル main.cf の編集
“/etc/aliases” ファイル内で :include:
を使用する際は、Postfix の設定ファイル “main.cf” に以下のように追記しなければならない。
(Postfix は、デフォルトでは :include:
での “|command” への配送を認めていないため)
1
|
|
7. Postfix 設定のリロード
1
|
|
8. aliases の設定反映
1
|
|
9. 動作確認
実際に test ユーザ宛にメールを送信してみて、指定のディレクトリ配下に保存されること、内容が適切であることを確認する。
10. その他
上記の 4, 5, 6 でエイリアスを別ファイルに分けてインクルードしている。
これは、"/etc/aliases" 内で直接コマンドを指定すると作成されるファイルの所有者・グループが “nobody:nogroup” になってしまうのを防ぐためである。
11. 参考サイト
当方は、Linux サーバに Twitter ツイート専用のユーザを作成し、そのユーザ宛に配送されたメール本文をツイートするように応用しています。
以上。