次のページ 前のページ 目次へ

5. 自動化

さて全て動作しました。もし動作しなかったらちゃんと動作するまで自動化は しなようにして下さい。ここでスクリプトが必要です。 procmailrcファイルにユーザーを追加するために"メール管理者"やrootユーザー に我慢する必要はありません。以下の例は経験のあるユーザー用のものです。 いくつか変更する必要があります。方法BのSubject行を使った例ですが、簡単に 方法Aのものに変更することができます。方法Bは方法Aよりも(安く)実現できるの で著者は方法Bを使いました。何回となく聞いてきましたが...。あなたをいらつか せる(bug) :))) 方法について :)) 書いています...。

5.1 骨組み("skeleton")

フッタはフッタであることが必要なので(返信するので以下は全て処理されません)、 ヘッダファイルとフッタファイルが必要です。

".procmailrc-header"について

このファイルは「"ヘッダ"と"ユーザー"」ファイルです。 ここでユーザーが追加されたり削除されたりします。とても重要なファイルです。 ユーザーを追加するときはバックアップをとるようにしましょう。システムエラーを 引き起こす何か悪いところがあるかもしれません.....。

(*** < file > *** text ***) .procmailrc-header

:0 c
        passtrough

:0 
* ^To:.*freaker@ibm.net
! freaker

:0
* ^Subject:.root
! root

:0
* ^Subject:.barbara
! barbara

:0
* ^Subject:.paul
! paul@his.personal.emailaddress

:0 c
* ^Subject:.john
! john@his.personal.emailaddress

:0 
* ^Subject:.john
! john

:0
* ^From:.*newsletter@ibm.net
! freaker

:0
* ^FROM_DAEMON
throwaway

".procmailrc-footer"ファイル

上述したように.procmailrcファイルにはフッタが必要です。 以下のコードはユーザーに配送するメール以外のヘッダの処理をします。 このフッタは上記した.procmailrc-headerに載っていないユーザー宛ての メールを返信するコードが含まれています。ただのファイルの終りというわけで はありません!

(*** < file > *** text ***) .procmailrc-footer


:0
  |(/usr/bin/formail -r -k \
     -A"X-loop: mailservice@mydomain.dom "| \
       /usr/bin/gawk '{print }\
       /^/ && !HEADER \
         { system("/bin/cat nosuchuser"); \
         print"--" ;\
         HEADER=1 }' ) |\
         /usr/bin/sendmail -t


exit

5.2 addmail スクリプト

このスクリプトはヘッダファイルにユーザーを追加するものです。ヘッダとフッタが 結ばれています。これで完全な.procmailrcファイルになります。 "#"(コメント)は特に必要ではありません。あなた自身が情報を 書き込んで下さい。

(*** < file > *** code ***) addmail (* chmod 500 *)

#/bin/sh
#
# Copyright (c)1997 by Gunther Voet. rev 1.0.1
# please leave the Copyright in it when it is distributed with any
# system using this thingy ..

echo ""
echo "Addmail v1.0.1 by Gunther Voet, Freaker / TuC'97-98 (21/04/97)"
echo ""

if [ $1 ]; then

        if [ $2 ]; then

# バックアップファイルの作成!
        
        cp /home/mailserv/.procmailrc-header /home/mailserv/.procmailrc-backup
        
# (>>)  ヘッダファイルに情報を追加。

        echo ":0" >> /home/mailserv/.procmailrc-header
        echo "* ^Subject:.$1" >> /home/mailserv/.procmailrc-header
        echo "! $2" >> /home/mailserv/.procmailrc-header
        echo "" >> /home/mailserv/.procmailrc-header

# ヘッダファイルを.procmailrcにコピーしてフッタファイルを追加する。

        cat /home/mailserv/.procmailrc-header > /home/mailserv/.procmailrc
        cat /home/mailserv/.procmailrc-footer >> /home/mailserv/.procmailrc

# "mailserv"の所有権を確認する。読み書きの権限は"mailserv"ユーザー
# のみにあるようにする。

        chown mailserv /home/mailserv/.procmailrc
        chgrp users /home/mailserv/.procmailrc
        chmod 600 /home/mailserv/.procmailrc
else
        echo "No DESTINATION mail address has been given ..."
fi

else
        echo "usage:"
        echo ""
        echo "syntax:  addmail from_user to_user(domain)"
        echo ""
        echo "example: addmail freaker freaker@myemail.dom"
        echo ""
fi

このスクリプトはヘッダファイルにメールアドレスとユーザー情報 を追加します。 .procmailrcに情報をコピーしてフッタを追加します。これで メールを処理するための .procmailrc が完成します。ユーザーを削除したいとき は.procmailrc-headerファイルを編集するだけです。次からはユーザーを追加 する時に.procmailrcから削除されます(訳注:つまりこの方法ではユーザーを 削除する時は.procmailrcではなく.procmailrc-headerで削除して おきます)。すぐに削除する必要がある時は.procmailrc-header.procmailrcの両方のファイルからユーザーを消しておいて下さい。

[訳注:まとめると、

となります。]


次のページ 前のページ 目次へ