お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2016-07-05 10:03:26

TulipMarlowe
新しいメンバ
登録日: 2016-07-05

Postfixで全てのメール受信時に、メールを該当ユーザに配信しつつ処理を行いたい

すみません、Postfixのフォーラムを探したのですがめぼしいものが見つからなくて、このフォーラムに質問させていただきました。
「題名」に記載した件ですが、その様な目的でネット検索して見つかるのは、
「/etc/postfix/aliases.reg に
/^[a-z]+(@localhost.localdomain)?$/ "| /bin/sh /tmp/test.sh"
と記述すれば、任意のメールを受信した際に test.sh を実行できる」と言った情報までです。
この方法ではtest.shでメールを処理は出来ますが、本来受信するはずだったユーザのメール
ボックスにはメールが届きません。
通常のaliases であれば、
hoge: "\hoge, | /bin/sh /tmp/test.sh" の様な記述で本来の受信者にも届きますが、
上記aliases.regの例では正規表現を使うため、「\本来の受信者,」の記述が出来ません。
試しに
/^[a-z]+(@localhost.localdomain)?$/ "\&, | /bin/sh /tmp/test.sh"
等もやってみましたが、エラーになるだけでした。

「メールを該当ユーザに配信しつつ処理を行う」が実現できればaliases.regに拘りませんが、
どなたか良い方法ご存知の方はお教え願います。

オフライン

 

#2 2016-07-05 13:44:19

ry
メンバ
登録日: 2008-07-30

Re: Postfixで全てのメール受信時に、メールを該当ユーザに配信しつつ処理を行いたい

何を参考にされたか分からないため、的確な回答はできません。

aliases.reg ファイルは Postfix の設定に使用するキーワードに含まれないため、何らかのキーワードのパラメーターで指定されているファイル名だと思います。
質問の内容からすると、たぶん alias_maps のパラメーターとして regexp:/etc/postfix/aliases.reg または pcre:/etc/postfix/aliases.reg として指定されているのだろうと推測します。
であれば、後方参照を使って以下のようにすれば良さそうに思えます。※未検証です。

/^([a-z]+)(@localhost.localdomain)?$/ "\${1}$[2}, | /bin/sh /tmp/test.sh"

:参考:
http://www.postfix-jp.info/trans-2.1/jh … ble.5.html (日本語だけどバージョンが古い)
Postfix manual - regexp_table(5) (英文)
Postfix manual - pcre_table(5)]  (日本語だけどバージョンが古い)
Postfix manual - pcre_table(5) (英文)

#なお、本来は Postfix のフォーラムなり ML に質問すべき内容です。

オフライン

 

#3 2016-07-05 17:52:16

TulipMarlowe
新しいメンバ
登録日: 2016-07-05

Re: Postfixで全てのメール受信時に、メールを該当ユーザに配信しつつ処理を行いたい

色々割愛し過ぎてすみません、でもくみ取っていただいた通りの意図でした。
で、教えていただいた設定を試してみたところ、メールが残る様にはなりましたが後ろのスクリプトを動かせませんでした。
教えていただいた「:参考:」を研究してみます。結果はまた報告します。

どうも有難うございました。

オフライン

 

#4 2016-07-11 15:44:03

TulipMarlowe
新しいメンバ
登録日: 2016-07-05

Re: Postfixで全てのメール受信時に、メールを該当ユーザに配信しつつ処理を行いたい

今回の質問の意図は、
「AD認証によるpostfixのユーザにquotaを設定したい」と言うものでした。postfixにもquota機能はありますが、Mailbox形式の保存方法でしか上手く設定出来なかったので標準のディスクquotaを使うことにしました。ただ、AD認証なのでpostfixサーバには最初は各ユーザのホームディレクトリがありません。postfixもdovecotも賢くて最初にメールを受信したり、最初にimapアクセスを受けたりした時点で初めて$HOME/Maildir/{new,cur,tmp}を作成してくれます。dovecotはどうやらPAMの機能でこれを実現しているのではないかと思いますが、postfixは独自にやっている様に思えます。
それでメール受信時に「未だそのユーザでquota設定して無ければquota設定する」スクリプトを作ろうと思い、本フォーラムに質問させていただいた次第です。
ryさんにアドバイスいただきましたが、カレントなユーザのMaildirに受け取ることが出来ると、コマンドの実行がエラーになってしまい、結局上手く実行できませんでした。
そんなとき、たまたまネット検索でincrondの事を知り(知らなかったので)、$HOMEが作成されたことを検知してedquotaを実行する様に設定できました。今回はこれで解決としたいと思います。

ryさん、場違いでなおかつ情報不足の質問にも関わらず丁寧なご返信を有難うございました。

オフライン

 

Board footer

Powered by FluxBB