Как да създадем автоматичен отговор във 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