LINUX.ORG.RU
ФорумAdmin

Про заголовки и аутентификацию в exim4

 


0

1

Добрый день.

Я уже всю голову сломал, никак не могу победить, а информации не много по этому вопросу...

У меня две проблемы.

Первая: не могу победить аутентификацию на сервере. Вот мои аутентификаторы:

    PLAIN:
      driver                     = dovecot
      public_name                = PLAIN
      server_set_id              = $auth1
      server_socket              = /var/run/dovecot/auth-client
      server_advertise_condition = ${if def:tls_cipher }
     

     
    LOGIN:
      driver                     = dovecot
      public_name                = LOGIN
      server_set_id              = $auth1
      server_socket              = /var/run/dovecot/auth-client
      server_advertise_condition = ${if def:tls_cipher }

При отправке сообщения из thunderbird - оно отлично уходит и доставляется до получателя. Проблема возникает при попытке отправить сообщения с некоторых сайтов, написанных, например, на opencart. Я создаю учётную запись, ввожу настройки на сайте и, какой бы тип шифрования я не выбрал - возникает ошибка:

auth command used when not advertised

Собственно, если прителнетиться к 25 порту (и то же самое, если сделать gnutls-cli --verbose --starttls -p 587 $server) и набрать EHLO - нет команды AUTH в списке. Затем набираем STARTTLS, получаем сертификат. Снова EHLO - всё так же нет AUTH... Возможно, проблема с отправкой с сайта на opencart в этом.

Это связано с server_advertise_condition - если поставить её равной *, то AUTH появляется в списке. Но не стоит ведь разрешать аутентификацию, если соединение не зашифровано! Так нельзя!

Есть ещё один параметр server_condition. Если его настроить, например так:

server_condition = ${lookup mysql{SELECT `username` FROM `users` WHERE `username` = '${quote_mysql:$auth2}' AND `passwd` = '${quote_mysql:$auth3}' AND `active` = '1'}{yes}{no}}
то аутентификация начинает работать почти правильно: пишем EHLO, получаем список, в котором нет AUTH, вводим STARTTLS, снова EHLO - появляется AUTH PLAIN LOGIN - отлично? Нет! После этого из thunderbird нельзя отправить сообщение. Вот часть лога:
11:42:57   731   $auth1 = admin@example.ru
11:42:57   731   $1 = admin@example.ru
11:42:57   731 expanding: $auth2
11:42:57   731    result: 
11:42:57   731 expanding: $auth3
11:42:57   731    result: 
11:42:57   731 expanding: SELECT `username` FROM `users` WHERE `username` = '${quote_mysql:$auth2}' AND `passwd` = '${quote_mysql:$auth3}' AND `active` = '1'
11:42:57   731    result: SELECT `username` FROM `users` WHERE `username` = '' AND `passwd` = '' AND `active` = '1'
И, естественно:
SMTP>> 535 Incorrect authentication data
ибо $auth2 и $auth3 не разворачиваются...

Как быть, где почитать, что настроить?

Вторая моя проблема связана с заголовками писем, которые приходят:

...
Sender: "admin@example.ru"@example.ru
...
Return-Path: "admin@example.ru"@example.ru
...
Они такие, если отправлять из thunderbird или roundcube. Почему они такие?

Ребята помогите, пожалуйста! Направьте в нужную сторону.

Ответ на: комментарий от tetramin

Что-бы показывать наличие у тебя AUTH не обязательно удостоверяться в наличии шифрования у спрашивающего его. Всё равно AUTH методы PLAIN или LOGIN у тебя закрыты ${if def:tls_cipher}. Но раз ты такой перфекционист, то вот:

auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}

bass ★★★★★
()
Последнее исправление: bass (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.