Как да създадем
автоматичен отговор във Postfix чрез Autoresponse
Автор: Мартин Петров
Author: Martin Petrov
Autoresponder е система за
автоматичен отговор за Postfix MTA. Той ви позволява да създавате съобщения за
автоматичен отговор за имейл акаунти от шел или чрез пощата до определен имейл.
Не мога да ви
гарантирам, че тази статия ще работи и при вас.
1.
Предварителна бележка
Настройките които ще опиша работят перфектно за моите настройки за „Виртуални
потребители с Postfix, Courier, MySQL и SquirrelMail”. Не мога да гарантирам, че ще работи за
вашите настройки.
Аз използвам “Виртуални
потребители с Postfix, Courier, MySQL и SquirrelMail”
и имам създаден имейл martin_petrov[at]example.com за която пощенска кутия ще създадем автоматичен отговор.
2.
Инсталиране на Autoresponder.
Първо се налага да изтеглим Autoresponder и да го инсталираме по следния начин:
cd /tmp
wget http://www.nefaria.com/scriptz/autoresponse-1.6.2.tar.gz
tar xvfz autoresponse-1.6.2.tar.gz
cd autoresponse
useradd -d /var/spool/autoresponse -s `which nologin` autoresponse
mkdir -p /var/spool/autoresponse/log /var/spool/autoresponse/responses
cp ./autoresponse /usr/local/sbin/
chown -R autoresponse:autoresponse /var/spool/autoresponse
chmod
-R 0770 /var/spool/autoresponse
След това редактираме /etc/postfix/master.cf:
vim /etc/postfix/master.cf
В началото на файла ще видим следния ред:
[...]
smtp inet n
- - -
- smtpd
[...]
Редактираите го така, че да изглежда последния
начин(втория ред трябва да започне най- малко с една шпация):
[...]
smtp inet n
- - -
- smtpd
-o
content_filter=autoresponder:dummy
[...]
В края на файла добавете следните два реда(отново
в началото на втория ред трябва
да има минимум
една шпация)
[...]
autoresponder unix - n n - - pipe
flags=Fq user=autoresponse
argv=/usr/local/sbin/autoresponse -s ${sender} -r
${recipient} -S ${sasl_username} -C ${client_address}
Тогава стартираме:
postconf -e 'autoresponder_destination_recipient_limit = 1'
и рестартираме Postfix:
/etc/init.d/postfix
restart
Ако имате потребителите със Шел достъп и желаете тези потребителите да има достъп до автоматичните отговори тогава трябва да добавите всеки потребител в групата на autoresponse. Например както ще бъде направено за потребител martin_petrov:
usermod
-G autoresponse martin_petrov
Все пак това не
е необходимо ако желаете да създадете
автоматични отговори за root
3. Използване на Autoresponse
Стартираме:
autoresponse –h
за да изведен помощната страница на autoreponse
от където можем да научим как да го
ползваме:
server1:~# autoresponse -h
/usr/local/sbin/autoresponse [-r {recipient email} -s {sender email} -S
{sasl username} -C {client ip}]
[-e {email address}] [-d {email address}] [-E {email address}] [-D {email
address}] [-h]
-r, -s, -S, and optionally -C
must be used together to
specify a recipient, sender, sasl username, and client IP of an
autoresponse message.
Normally you configure
these in postfix's "master.cf"
but they can be used from the terminal as well (only for testing
purposes!).
If this is executed from a
terminal, you'll need to hit CTRL-D
when you are finished typing your
autoresponse message.
-e is used to create a new
autoresponse or edit an existing one for the specified user.
If a disabled autoresponse
message exists, it will be ignored and a new message will be created.
-d is used to disable an
existing active autoresponse message.
-E is used to enable an
existing autoresponse message. If both a disabled AND and
an active autoresponse message exist,
the active message will be
overwritten by the disabled one.
-D is used to delete an existing
autoresponse message, it will not delete disabled autoresponse messages.
-h prints this help menu
server1:~#
За да създадем автоматично съобщение за акаунта martin_petrov[at]example.com
ще изпълним:
autoresponse -e martin_petrov@example.com
и въвеждаме текст за автоматичен отговор
I will be out the week of March 2 with very limited access to email.
I will respond as soon as possible.
Thanks!
Martin_petrov
(Не можете да изберете заглавие използвайки този метод. По подразбираме
заглавието на автоматичния отговор ще бъде "Out of Office"
Сега изпращаме писмо от martin_petrov[at]example.com
от различен акаунт и ще получим съобщението по-горе.
За да деактивираме съществуващ автоматичен
отговор изпълняваме:
autoresponse -d martin_petrov[at]example.com
За да активираме деактивирания автоматичен
отговор стартирайте:
autoresponse -E martin_petrov[at]example.com
За да изтрием автоматичния отговор стартирайте:
autoresponse -D martin_petrov[at]example.com
Имаме възможност и да редактираме променливата "RESPONSE_RATE" във "/usr/local/sbin/autoresponse". Тя дефинира време (в секунди) което определя колко често автоматичното съобщение да бъде изпратено за email адрес. По подразбиране стойността е 86400 (секунди) което означава че ако изпратя писмо до martin_petrov[at]example.com и получа автоматичен отговор и изпратя второ писмо до martin_petrov[at]example.com в тези 86400 секунди (един ден) аз няма да получа друг автоматичен отговор.
[...]
declare
RESPONSE_RATE="86400"
[...]
4. Създаване/Изтриване на Автоматични
съобщения(Autoresponder Messages) от пощенската кутия
Този път вместо да създадем
автоматичен отговор от командния ред
ще го направим
от пощенската кутия. Ако искате да създадете
автоматичен отговор за имейл адрес
martin_petrov[at]example.com изпратете имейл от martin_petrov[at]example.com до martin_petrov+autoresponse[at]example.com(Това работи само
ако има сетнат
SMTP-AUTH на текущия сървър). Заглавието на писмото ще стане заглавието
на автоматичното съобщение (този път можем да
дефинираме заглавие различно от Out of Office) и съобщението на автоматичния отговор ще бъде текстът
от изпратеното писмо.
Ако създадете автоматичен отговор по този
начин, Autoresponse ще изпрати обратно
писмо подобно на това(Ако операцията
е извършена успешно): Autoresponse enabled for martin_petrov@example.com by SASL
authenticated user: martin_petrov@example.com from: 192.168.0.200
Ако вече има такъв
автоматичен отговор за този имейл
адрес, то той ще бъде
деактивиран и ще се изведе следното
съобщение:
Autoresponse disabled for martin_petrov@example.com
by SASL authenticated user: martin_petrov@example.com from: 192.168.0.200