Работа с почтой в Linux в автономном режиме |
---|
Пред. | | След. |
Автоматизация
Хорошо, теперь, когда все, описанное выше, работает ... (если не работает -
даже не думайте об автоматизации, пока все не будет работать ...) - теперь
- нам нужен некоторый скрипт, чтобы избежать головной боли у
"mailadministrator'а" или root'а, при добавлении пользователей в файл
procmailrc ... Ниже будет приведен пример для "более опытных
пользователей", так как некоторые вещи ДОЛЖНЫ быть изменены ... - это
пример для "Способа B - строки Subject". Он может быть легко приспособлен к
"Способу A". "Способ B" будет больше использоваться (он более дешев), чем
способ "A" - лично я решил использовать "Способ B" ...
"Каркас (скелет)"
Необходимо иметь файл заголовка и файл конца.
Файл .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 (конец)
Как сказано выше, этот файл должен быть шаблоном окончания - т.к. все
данные ниже не будут использоваться - этот файл содержит код, возвращающий
ответ о том, что пользователь не найден !.
"(*** < 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
|
Скрипт addmail
Этот скрипт будет добавлять пользователя в файл заголовка. Присоединим
заголовок и конец друг к другу - таким образом, получим полный файл
.procmailrc. Строка, начинающаяся со знака "#", означает комментарий, и он не
обязателен - это только информация для вас. :)
"(*** < file > *** code ***) addmail (* chmod 500 *)"
#/bin/sh
#
# Copyright (c)1997 by Gunther Voet. rev 1.0.1
# пожалуйста, оставьте этот Copyright, когда будете распространять этот файл
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 -
# и добавить к нему окончание (.procmailrc-footer)
cat /home/mailserv/.procmailrc-header > /home/mailserv/.procmailrc
cat /home/mailserv/.procmailrc-footer >> /home/mailserv/.procmailrc
# Сделаем владельцем "mailserv" и чтение/запись ТОЛЬКО для группы user ...
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".