メール受信で自動的にスクリプトを実行する

sugimotoです。

インターネット向けのシステムでは、ユーザーからのメールを受信して自動的に処理をすることがあります。

  • メール投稿された記事をブログにアップする
  • 空メール送信による自動登録

postfix をメールサーバーにメール受信によるスクリプト実行の設定をする方法をメモしておきます。

1. postfixの設定

メール受信をするための細かい設定は省略しますが、スクリプト自動起動のため、alias の設定をします。

/etc/postfix/main.cf に以下の行を確認します。default で書いているので、そのままでいいですね。

alias_database = hash:/etc/aliases

受信するメールアドレスを正規表現で設定したい場合、正規表現アドレスを設定するファイルも追加しておきます。

alias_database = hash:/etc/aliases, regexp:/etc/aliases.regexp

2. aliasの設定

スクリプトを起動するメールアドレスを設定するために alias ファイルに設定を追加します。

groove@xxxxxx.xxx 宛てメールを受信したときに groove.php を実行する

[/etc/aliases]
groove: "| /usr/bin/php /var/lib/groove.php"

open-xxxxx@xxxxxx.xxx 宛てメールを受信したときに open.php を実行する

この場合、正規表現設定用のファイル /etc/aliases.regexp に正規表現で設定します。

[/etc/aliases.regexp]
/^open-/: "| /usr/bin/php /var/lib/open.php"

簡単です。。

3. postfixの設定

設定が終わったのでさっそくメールを送ると、以下のエラーで失敗してしまいました。

Command died with status 1: " /usr/bin/php
   /var/lib/groove.php". Command output: No log handling enabled -
   turning on stderr logging /usr/share/snmp/mibs/SNMP-COMMUNITY-MIB.txt:
   Permission denied /usr/share/snmp/mibs/NET-SNMP-TC.txt: Permission denied
   /usr/share/snmp/mibs/SNMPv2-TC.txt: Permission denied
   /usr/share/snmp/mibs/SNMPv2-SMI.txt: Permission denied
   /usr/share/snmp/mibs/SNMP-NOTIFICATION-MIB.txt: Permission denied
   /usr/share/snmp/mibs/SNMPv2-CONF.txt: Permission denied
   /usr/share/snmp/mibs/LM-SENSORS-MIB.txt: Permission denied
  ...中略・・・
   /usr/share/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt: Permission denied
   /usr/share/snmp/mibs/IF-MIB.txt: Permission denied
   /usr/share/snmp/mibs/IPV6-UDP-MIB.txt: Permission denied Cannot find module
   (IP-MIB): At line 0 in (none) Cannot find module (IF-MIB): At line 0 in
   (none) Cannot find module (TCP-MIB): At line 0 in (none) Cannot find module
   (UDP-MIB): At line 0 in (none) Cannot find module (HOST-RESOURCES-MIB): At
   line 0 in (none) Cannot find module (SNMPv2-MIB): At line 0 in (none)
   Cannot find module (SNMPv2-SMI): At line 0 in (none) Cannot find module
   (NOTIFICATION-LOG-MIB): At line 0 in (none) Cannot find module
   (DISMAN-EVENT-MIB): At line 0 in (none) Cannot find mod

しばらく途方にくれていましたが、Googleで検索したところ、 selinux がONになっていたことが原因ということ。

[/etc/selinux/config]
SELINUX=disabled < < enforcingから変更

以上、で成功しました。

zeera document search

エンタープライズ検索 zeera document search

zeera document searchで社内文書検索

Categorized: postfix

Comments are closed.