LINUX.ORG.RU
решено ФорумAdmin

Exim4 - проблема с Заглавными Буквами в email

 , ,


0

1

Никогда не работал с Exim4, я больше специалист по Postfix.

Но попросили меня решить одну проблему.

Есть сервер, куда прилетает почта, вроде все хорошо, только вот есть одни клиенты, которые присылают почту ЗАГЛАВНЫМИ БУКВАМИ. и эти письма не проходят через exim4.

Пример,

пользователь semen.ivanov@somedomain.kz, прилетает письмо на SEMEN.IVANOV@SOMEDOMAIN.KZ.

как побороть в exim4 эту проблему? все снести и поставить postfix не могу.

★★★

пользователь semen.ivanov@somedomain.kz, прилетает письмо на SEMEN.IVANOV@SOMEDOMAIN.KZ.

Имеет право. И это ограничение, если оно в Exim правда есть, сделано искусственно вероятнее всего, а не по умолчанию, так как нарушает соответствующий RFC (не помню точно номер, может прямо 821 даже).

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от AS

нарушает соответствующий RFC

Не нарушает. Для DNS регистр (@SOMEDOMAIN.KZ) неважен. А пользователя (SEMEN.IVANOV@) почтовый сервер должен обрабатывать как есть.

Тут проблема может быть в том, что exim выполняет sender callout (проверку адреса отправителя на сервере отправителя), и эта проверка не проходит именно из-за регистра. Если проблема именно в callout'е, то вариантов целых несколько:

  • выключить callout полностью (плохо)
  • выключить callout для домена (в данной ситуации самое годное)
  • при callout приводить все имена к нижнему регистру (так себе - можно нарваться на встречную проблему)
  • настроить сервер, обслуживающий SOMEDOMAIN.KZ на регистро-независимую обработку юзернеймов (нереально)

P.S. Всё равно причину нужно искать в логах.

MumiyTroll ★★ ()
Ответ на: комментарий от AS

Весь E-Mail регистронезависимый.

Хотя... Как раз в 821 написано, что регистр у юзера может быть важен. Может я и не прав.

Значит вообще никому верить нельзя. :-)

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от bass

Нашел где надо менять но проблема выходит.

 local_parts = lsearch;VMAIL_PASSWD

меняю на

local_parts = ${lookup{${lc:lsearch;VMAIL_PASSWD}}}

ругается

failed to expand "${lookup{${lc:${lsearch;/somepath}}}}" while checking a list: "${lsearch" is not a known operator (or a } is missing in a variable reference)

Nurmukh ★★★ ()
Ответ на: комментарий от Nurmukh

проблема не здесь.

через dump определил, что exim4 нормально работает и определяет прописные и заглавные буквы в емайле.

но exim4 дальше передает письмо в dovecot, а dovecot не понимает заглавные буквы и не находит такого пользователя.

Как теперь заставить exim4 изменять адрес при передаче в dovecot?

Nurmukh ★★★ ()
Ответ на: комментарий от Nurmukh

Решение, которое я предложил было не верным.

Верное решение - это прописать router redirect, который будет изменять емайлы в lowercase и отправлять почту дальше в dovecot.

vmail_lowercase:
  debug_print = "R: lower case $local_part for dovecot"
  driver = redirect
  redirect_router = dovecot
  data = ${lc:${local_part}${local_part_suffix}}@${domain}

Nurmukh ★★★ ()