Exim + mysql: autoreply

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Wombat
рядовой
Сообщения: 13
Зарегистрирован: 2007-09-14 18:16:44

Exim + mysql: autoreply

Непрочитанное сообщение Wombat » 2007-09-14 18:28:15

Нашел в интернете код роутера и транспорта для организации "vacation autoreply", основанный на файлах. Решил переделать его под свою БД mysql:

Код: Выделить всё

router_autoreply:
    driver = accept
    condition =  ${lookup mysql{ \
        SELECT u.is_autoreply_enabled \
        FROM users u INNER JOIN domains d ON u.domain_id=d.domain_id \
        WHERE u.user_name='${quote_mysql:$local_part}' AND d.domain_name='${quote_mysql:$domain}' \
            AND u.is_smtp_enabled=1 AND u.is_autoreply_enabled=1 AND u.autoreply_text IS NOT NULL \
        }{true}{false}}
    no_expn
    no_verify
    transport = transport_autoreply
    unseen


transport_autoreply:
    driver = autoreply
    from = $local_part@$domain
    to = $sender_address
    subject = "Re: $h_subject"
    text = ${lookup mysql{ \
        SELECT u.autoreply_text \
        FROM users u INNER JOIN domains d ON u.domain_id=d.domain_id \
        WHERE u.user_name='${quote_mysql:$local_part}' AND d.domain_name='${quote_mysql:$domain}' \
            AND u.is_smtp_enabled=1 AND u.is_autoreply_enabled=1 AND u.autoreply_text IS NOT NULL \
        }}
Проверил - работает. Только вот смущают меня эти lookups в плане производительности. Можно ли как-то получить одним запросом данные в условии (например, в роутере) и записать их в переменные? Чтобы в транспорте можно было пользоваться сразу готовой, скажем, "$autoreply_text".

з.ы. Может еще чего важного не хватает - посоветуйте плз :|

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35437
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim + mysql: autoreply

Непрочитанное сообщение Alex Keda » 2007-09-14 20:02:16

думаю, что можно на это забить.
у меня в локалке на каждое письмо два десятка запросов к MySQL и на внутреннем роутинге - столько же к LDAP.
это не самое узкое место на котором надо экономить.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim + mysql: autoreply

Непрочитанное сообщение dikens3 » 2007-09-15 20:17:35

to Wombat
Нашел в интернете код роутера и транспорта для организации "vacation autoreply", основанный на файлах. Решил переделать его под свою БД mysql:
Если есть желание скидывай в полезные настройки для Exim.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
-cat-
сержант
Сообщения: 202
Зарегистрирован: 2007-07-31 0:05:56
Контактная информация:

Re: Exim + mysql: autoreply

Непрочитанное сообщение -cat- » 2007-09-15 20:46:46

dikens3 писал(а):Если есть желание скидывай в полезные настройки для Exim.
А где их мона посмотрить

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Exim + mysql: autoreply

Непрочитанное сообщение dikens3 » 2007-09-15 20:50:01

-cat- писал(а):
dikens3 писал(а):Если есть желание скидывай в полезные настройки для Exim.
А где их мона посмотрить
http://forum.lissyara.su/viewtopic.php?f=20&t=3577
P.S. Тем прилеплена, самая верхняя.
Последний раз редактировалось Alex Keda 2007-09-15 20:59:58, всего редактировалось 1 раз.
Причина: урл был некликабельный...
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Wombat
рядовой
Сообщения: 13
Зарегистрирован: 2007-09-14 18:16:44

Re: Exim + mysql: autoreply

Непрочитанное сообщение Wombat » 2007-09-17 12:02:21

dikens3 писал(а):Если есть желание скидывай в полезные настройки для Exim.
Погоняю этот роутер с месяц на реальной почте, может доработаю немного. Потом скину "stable"-версию :twisted:

Wombat
рядовой
Сообщения: 13
Зарегистрирован: 2007-09-14 18:16:44

Re: Exim + mysql: autoreply

Непрочитанное сообщение Wombat » 2007-10-18 10:10:08

Роутер пока что не выдерживает проверку временем. За время использования возникло несколько проблем.

Первая проблема - глюки с кодировкой subject

Код: Выделить всё

subject = "Re: $h_subject"
Если приходит письмо с не-английскими символами в сабже, то это правило выдает ошибку "non-printable characters". В результате письмо не доходит и отдается ошибка (вроде 550, точно уже не помню).
Пробовал ${escape:$h_subject} - не помогает. Сдается мне, надо как-то производить MIME-раскодировку заголовка, добавлять туда "Re: " и кодировать снова.
Или более простой вариант - забить на переменную $h_subject и просто возвращать "Re: "



Все бы хорошо, если бы не вторая проблема - autoreply локальным юзверям

Код: Выделить всё

to = $sender_address
Сюда подставляется адрес отправителя. Если отправитель не локальный, проблем нет. Однако, если отправка от локального пользователя, в переменную $sender_address подставляется значение вида:

Код: Выделить всё

"localusername@localdomain.com"@localserver.fqdn.com
В результате "550 Unrouteable address".

Мысли по поводу описанных проблем - приветствуются :) Хочется уже довести фичу до работоспособного состояния.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35437
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim + mysql: autoreply

Непрочитанное сообщение Alex Keda » 2007-10-18 10:44:20

про сабджект - правильно отдаётся - ибо это не по стандарту.
про сотальное - надо в дебага смотреть откуда оно лезет
Убей их всех! Бог потом рассортирует...

g1itch
проходил мимо

Re: Exim + mysql: autoreply

Непрочитанное сообщение g1itch » 2011-07-15 17:34:09

На самом деле exim сам декодирует заголовки, когда к ним обращаются через $h_XXX. Так что пишем:

Код: Выделить всё

# как я понимаю, зависит от системной $LANG
# по умолчанию ISO-8859-1
headers_charset = UTF-8

transport_autoreply:
  ...
  subject = ${rfc2047:Re: $h_subject:}