好了,现在,以上所有内容都应该能工作了... (如果它不能工作 - 在它 *能* 工作之前,甚至不要考虑自动化... - 现在 - 我们需要一些脚本,这样 "邮件管理员" 或 root 用户将用户添加到 procmailrc 文件中就不会那么痛苦... 下面的例子将是给 "更有经验的用户" 的 - 因为有些东西也 *需要* 修改... - 这是一个使用 "B 方法 - 主题行" 的例子。它可以很容易地适应 "A 方法"。由于 "B 方法" 将比 "A" 方法更常用 (更便宜) - 我决定使用 "B 方法"... 我听起来是否重复了?.. 好吧 - 我就是想这样写 :)) 来烦你一下 :)))..
由于页脚需要作为页脚 (页脚下面的所有内容都不会被处理,因为我们将在那里进行 bounce); 因此需要一个页眉和一个页脚文件。
这个文件现在将是 "页眉 & 用户" 文件... 因为用户将在这里被添加和删除 - 它将是一个重要的文件... - 最好每次添加用户时都对其进行备份... - 有时 *可能* 会出现问题... 系统可能会发生故障...
(*** < 文件 > *** 文本 ***) .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
如上所述,此文件需要作为页脚 - 因为它 *下面* 的所有数据都不会用于传递 - 此页脚包含 "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
此脚本会将用户添加到页眉文件,并将页眉和页脚相互附加 - 这样它将成为一个完整的 .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" 时) 自动添加您的用户。