Автоответ в Exim

31 Jul 2009 | Автор: anchous |

Часто бывает необходимо отсылать автоответ о том, что сотрудник временно отсутствует в офисе, причем желательно это производить на уровне сервера, а не почтового клиента. В Exim это можно сделать несколькими способами.
Первый способ подходит для классически настроенного Exim.

##########################################################
Раздел ROUTERS CONFIGURATION:

autoreply:
driver = accept
require_files = /usr/home/exim/$local_part/.vacation.txt
condition = ${if or { \
{match {$h_precedence:} {(?i) junk|bulk|list}} \
{eq {$sender_address} {}} \
{match {$h_subject:} {(ADV|Adv)}} \
} {no} {yes}}
no_expn
senders = !+noautoreply_senders
transport = address_reply
unseen
no_verify

##########################################################
Раздел TRANSPORTS CONFIGURATION:

address_reply:
driver = autoreply
file = /usr/home/exim/$local_part/.vacation.txt
file_expand
once = /var/log/exim-$local_part-vacation.db
once_repeat = 1d
from = $local_part@odminblog.ru
headers_add = “Auto_Repl:$reply_address”
to = $sender_address
subject = Re: ${rfc2047:$h_subject:}

##########################################################
В разделе MAIN CONFIGURATION определяем местоположение списка исключений для автоответа

addresslist noautoreply_senders = /etc/mail/autorep.noanswer

##########################################################

И собственно определяем сам список доменов, на письма с которых не нужно отсылать автоответ:

##########################################################
#### /etc/mail/autorep.noanswer
##########################################################

^.*-request@.*
^owner-.*@.*
^.*-owner@.*
^.*-admin@.*
^bounce-.*@.*
^.*@bounce\..*
^.*-outgoing@.*
^.*-relay@.*
^.*-bounces@.*
^.*-bounce@.*
^.*-confirm@.*
^.*-errors@.*
^mailer@.*
^postmaster@.*
^mailer-daemon@.*
^mailer_daemon@.*
^majordomo@.*
^majordom@.*
^mailman@.*
^nobody@.*
^reminder@.*
^autoreply.*@.*
^.*-autoresponder@.*
^autoresponder@.*
^listserv@.*
^daemon@.*
^server@.*
^root@.*
^noreply.*@.*
^no-reply@.*
^bounce@.*
^news@.*
^request.*@.*
^httpd@.*
^lighttpd@.*
^www@.*
^www-data@.*
^nagios@.*
^sales@.*
^info@.*
^fetchmail.*@.*
^listmaster@.*
^mailmaster@.*
^webmaster@.*
^squid@.*
^support@.*
^exim@.*
scomp@aol.net

Теперь все что от нас требуется, это своевременно закинуть в домашнюю директорию пользователя файлик .vacation.txt с текстом автоответа. Кодировка по умолчанию будет utf-8

##########################################################
На EximWiki несколько иная конфигурация которая выглядит довольно убедительно, но я её не пробовал, т.ч. просто привожу.
##Router##
uservacation:
driver = accept
domains = +local_domains
condition = ${if or { \
{ match {$h_precedence:} {(?i)junk|bulk|list} } \
{ eq {$sender_address} {} } \
{ def:header_X-Cron-Env: } \
{ def:header_Auto-Submitted: } \
{ def:header_List-Id: } \
{ def:header_List-Help: } \
{ def:header_List-Unsubscribe:} \
{ def:header_List-Subscribe: } \
{ def:header_List-Owner: } \
{ def:header_List-Post: } \
{ def:header_List-Archive: } \
{ def:header_Autorespond: } \
{ def:header_X-Autoresponse: } \
{ def:header_X-Autoreply-From: } \
{ def:header_X-eBay-MailTracker: } \
{ def:header_X-MaxCode-Template: } \
{ match {$h_X-Auto-Response-Suppress: } {OOF} } \
{ match {$h_X-OS:} {HP Onboard Administrator} } \
{ match {$h_X-MimeOLE:} {\N^Produced By phpBB2$\N} } \
{ match {$h_Subject:} {\N^Yahoo! Auto Response$\N} } \
{ match {$h_Subject:} {\N^ezmlm warning$\N} } \
{ match {$h_X-FC-MachineGenerated:} {true} } \
{ match {$message_body} {\N^Your \”cron\” job on\N} } \
{ match {$h_Subject:} {\N^Out of Office\N} } \
{ match {$h_Subject:} {\N^Auto-Reply:\N} } \
{ match {$h_Subject:} {\N^Autoresponse:\N} } \
{ match {$h_Subject:} {\N(Auto Reply)$\N} } \
{ match {$h_Subject:} {\N(Out of Office)$\N} } \
{ match {$h_Subject:} {\Nis out of the office.$\N} } \
{ match {$h_X-Spam-Flag:} {\N^yes\N} } \
{ match {$h_From:} {\N(via the vacation program)\N } } \
} \
} {no} {yes} \
}
require_files = /.vacation.msg
user = ${lc:$local_part}
senders = !+noautoreply_senders
transport = vacation_transport
unseen
no_expn
no_verify
##########################################
##Transport##
vacation_transport:
driver = autoreply
log = /.vacation.log
once = /.vacation.once
once_repeat = 7d
# Errors-To: is deprecated
# There are arguments over whether this should send to the SMTP sender, or
# to a From:, Reply-To: or Resent-From: header
to = “${if def:h_Errors-To: {$h_Errors-To:} {$sender_address}}”
file = /.vacation.msg
return_message
subject = ${if def:h_subject: \
{Auto: Re: ${rfc2047:${quote:${escape:${length_60:$h_subject:}} }} }\
{Auto: I am away from my mail} \
}
user = ${lc:$local_part}

Файлы исключения для автоответа прописываются таким же образом.
##########################################################

Второй способ значительно проще, и подразумевает запущенную связку Exim + DBmail + MySQL. В этом случае мы всего лишь определяем в разделе Transport следующую строку:
address_reply:
driver = autoreply

и в конфигурационном DBMAIL dbmail.conf определяем дерективу отвечающую за использование таблицы auto_reply для автоответа.

AUTO_REPLY = yes

VN:F [1.9.21_1169]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.21_1169]
Rating: 0 (from 0 votes)

Теги: , , ,

Отзывов: 2 на «Автоответ в Exim»

  1. Автор: eugene на 19 Dec 2011

    добрый день, пытаюсь сделать все по первому способу. но как-то не выходит, если не сложно-тыкните носом на ошибку. делал так:

    -Раздел ROUTERS CONFIGURATION:
    1)require_files – подправил путь

    -Раздел TRANSPORTS CONFIGURATION:
    1)file = – снова подправил путь
    2)from = – подправил имя домена

    далее все по инструкции, файлик в папку юзера положил.
    после чего -> rcexim restart
    заранее примного благодарен

    [Reply]

    anchous Reply:

    а вы исключения описали, которые в мейнконф прописываются?
    и что вообще говорят логи?

    [Reply]

    VN:F [1.9.21_1169]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.21_1169]
    Rating: 0 (from 0 votes)

Ваш отзыв