下一页 上一页 目录

5. 自动化

好了,现在,以上所有内容都应该能工作了... (如果它不能工作 - 在它 *能* 工作之前,甚至不要考虑自动化... - 现在 - 我们需要一些脚本,这样 "邮件管理员" 或 root 用户将用户添加到 procmailrc 文件中就不会那么痛苦... 下面的例子将是给 "更有经验的用户" 的 - 因为有些东西也 *需要* 修改... - 这是一个使用 "B 方法 - 主题行" 的例子。它可以很容易地适应 "A 方法"。由于 "B 方法" 将比 "A" 方法更常用 (更便宜) - 我决定使用 "B 方法"... 我听起来是否重复了?.. 好吧 - 我就是想这样写 :)) 来烦你一下 :)))..

5.1 "骨架"。

由于页脚需要作为页脚 (页脚下面的所有内容都不会被处理,因为我们将在那里进行 bounce); 因此需要一个页眉和一个页脚文件。

".procmailrc-header" 文件

这个文件现在将是 "页眉 & 用户" 文件... 因为用户将在这里被添加和删除 - 它将是一个重要的文件... - 最好每次添加用户时都对其进行备份... - 有时 *可能* 会出现问题... 系统可能会发生故障...

(*** < 文件 > *** 文本 ***) .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 文件 ..

如上所述,此文件需要作为页脚 - 因为它 *下面* 的所有数据都不会用于传递 - 此页脚包含 "bounce" 代码,用于 bounce *在* 此页脚 *之上* 未找到的用户!它是文件的绝对结尾!

(*** < 文件 > *** 文本 ***) .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 文件。"#" (注释) 不是真正需要的 - 只是为了您的信息 :)。

(*** < 文件 > *** 代码 ***) 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

# make a backup file !        
        
        cp /home/mailserv/.procmailrc-header /home/mailserv/.procmailrc-backup
        
# APPEND (>>) the information to the header file ...        

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

# copy the header file to .procmailrc - and append the footer file to it !

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

# make sure it is owned by "mailserv" and the read/write priveleges are ONLY
# for the user "mailserv" itself ...

        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 文件中删除用户即可。

我想您足够聪明,可以编写一个脚本,在您使用这两种方法时 (当在您的机器上执行 "adduser" 时) 自动添加您的用户。


下一页 上一页 目录