The dot-qmail deliver program for postfix

What's this?

This is for the people those who are suffering from Postfix's lacking facility of scripting aid, which had been given by dot-qmail mechanism in qmail.

これまで .qmail-* とか、.qmail-*-default をばりばり使っていたのに、 管理者がMTAを Postfix に変えてしまって、 Postfix の .forward 機構では満足な振り分けができなくて 困っている人に捧ぐ。あるいは純粋にqmailの拡張アドレスを使いたい人に。

Prerequisite

You are running postfix with the parameter `recipient_delimiter = +' or `recipient_delimiter = -' in main.cf. If the command line as below produces something, you have it.

postconf|grep '^recipient_delimiter'

上のように打ってみて何か出て来ればPostfixで拡張アドレスが 使えるようになっているはず。なっていないときは頼み込んで入れてもらおう。 管理者が自分なら /etc/postfix/main.cf

recipient_delimiter = -

または、

recipient_delimiter = +

なんてのを足し、postfixの設定をリロードしておく。

How to install

  1. Copy dotqmail to some directory
    `~/script' for example.

  2. Install zsh 4.0 or higher.

  3. Modify the 1st line of dotqmail script so that it points to installed zsh.
    eg.

    #!/usr/local/bin/zsh -f
      ↓
    #!/bin/zsh -f
    

    If you have zsh in /usr/local/bin, you dont have to change the first line.

  4. Add the next line to your ~/.forward

    |"$HOME/script/dotqmail"
    

    A typical content of your ~/.forward is as follows.

    ~/Maildir/
    |"$HOME/script/dotqmail"
    

dot-qmail life

そもそも分類したいメイルをひとつのアドレスに集めてしまうことが 愚かである。ご飯と味噌汁を同じ丼に入れて出されたら分けるの大変じゃろ? procmailで振り分け,なんてのが賢いように書かれているが procmail,すぐ分かるか? わしゃ分からん。難しすぎる。 レシピ記述に間違いがあったら,もうアウト。難しいものは間違えやすい。

ということで,最初から自分宛てのメイルを1つだけでなく, 用途ごとにたくさん作るのが賢い分類法で,とても簡単。たとえば, アドレスがたくさん必要な状況としてこんな例を考えよう。

レポートの電子受理

きょーびレポートも電子メイルで受けたいやね。じゃ, 宛先は自分宛てにして,そうだSubjectは「第1回レポート」にさせよう。 よし。

んがー,Subjectが「第一回レポート」だったりむちゃくちゃで, 自動振り分けできん! そうだ,Postfixは拡張アドレスが使えた。 今度の2回目レポートは,宛先を taro+report-2@example に変えよう。 ~/.forward+report-2 を作ってそこに専用maildir書けば いいんだな。よし。

んがー、宛先間違えやがって tao+report2 じゃないっつーの。 間違えた宛先は全部 ~/.forward が吸い込んじゃうのかよ。 これじゃ最初と変わらん。qmailだったら間違いアドレスはちゃんと エラーにして送り返してくれるのに、Postfixじゃエラーにならんから 送った学生が間違えたことにも気付かん。タチ悪いなこれ。

※注 上記の例は recipient_delimiter = + の場合で、recipient_delimiter = - で設定した場合は taro+report-2 ではなく、taro-report-2 などとなる。

そんなちみは dotqmail スクリプトで安心。 ~/.forward+report-2 ではなく、 ~/.qmail-report-2 というファイルを作って dotqmail スクリプトでここに配送させるようにすれば、 taro+report-2 宛てに送って来たらちゃんと配送、 存在しない宛先に送って来たらエラーで返す、つまり、 qmailのときと同じ挙動をしてくれる(ただし返るエラーは違う)。

この例をまとめると、~/.forward に、

|"$HOME/script/dotqmail"

~/.qmail

./Maildir/

~/.qmail-report-2

./report-2/

または

| /usr/local/bin/imstore -d report-2

などと書く(後者はいきなり ~/Mail/report-2/ フォルダに 格納してくれてああ便利)完了。~/.forward+report-2 なんかは 作らなくてよいのである。

dot-qmail機構の概要

以下の説明では、ユーザの基本メイルアドレスを taro@example.com と仮定する。

設置ファイル

dot-qmailファイルと受信アドレスの関係は以下のようになる。

(デフォルト)
.qmailtaro@example.com
.qmail-exttaro-ext@example.com
.qmail-default 他の .qmail-ext に該当しない全ての taro-*@example.com

dot-qmailの書式

1行に1エントリで何エントリでも記述可能。 各行の先頭文字によって4種類の配送をする。

環境変数

dot-qmailファイルに | で始まるコマンド起動を書いておくと、 qmail-command(8)でセットされるのと同じ環境変数をセットした上で そのコマンドを呼ぶ。

-ext の部分は多段設定可能で、 たとえば .qmail-foo-bar-default

NO WARRANTY

Command execution via email has essential risk. Use with care.

無保証。



yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]