Назад | Перейти на главную страницу

exim4 и разные HELO для всего домена на VPS

Допустим, у меня есть domain.com, domain2.com, domain3.com на одном VPS, и все они отправляют почту, но Helo всех сообщений со всех доменов - это localhost, который отклоняется некоторыми почтовыми провайдерами. Как заставить exim4 установить helo на доменное имя, откуда он отправляет почту. Например, если я отправляю почту с domain.com, helo должен быть domain.com. Другой вопрос, правильно ли это делать?

UPD Я передумал. Я просто хочу установить для него полное доменное имя коробки.

Транспорт SMTP имеет helo_data настройка. По умолчанию он установлен на $ primary_hostname, поэтому совет от первого лица будет работать нормально, если вы хотите настроить параметр primary_hostname на одно допустимое имя хоста. Поскольку вы, кажется, хотите сделать его HELO с динамическим именем хоста, вам нужно добавить небольшую логику, чтобы выяснить, какое имя он должен использовать.

Где-то в вашем DATA acl вы можете обнаружить эти конкретные домены и установить переменную. Это очень простой пример (вы можете улучшить его, используя поиск файлов или базы данных):

warn  domains      = domain1.com : domain2.com : domain3.com
      set acl_m_special_dom = mail.$domain

Посмотрите в своих журналах, чтобы определить, какой транспорт SMTP используется для отправки этого электронного письма. Отредактируйте этот транспорт и добавьте строку helo_data, которая проверяет эту переменную сообщения acl и настраивает имя хоста, которое exim будет использовать для HELO / EHLO, с помощью:

helo_data = ${if eq{$acl_m_special_dom}{}  \
                     {$primary_hostname}   \
                     {$acl_m_special_dom} }

Тест проверяет, пуста ли переменная. Если он пуст, он будет использовать $ primary_hostname. Но если он не пуст, то он должен быть установлен в приведенном выше условии ACL, чтобы использовать это имя хоста в EHLO. Эта переменная является переменной для каждого сообщения, поэтому она очищается между каждым сообщением (если несколько сообщений поступают в одном соединении).

Вы должны убедиться, что любое имя хоста, которое вы здесь используете, разрешается в общедоступном DNS (протестируйте с использованием DNS Google), и что IP, который он разрешает, также имеет обратный DNS. RDNS не обязательно должен соответствовать имени хоста, которое вы используете, но он должен разрешить что-то. И если это обратное разрешение на что-то, что выглядит динамично, как кабельный модем или линия DSL, он, скорее всего, по-прежнему блокируются или откладываются большинством основных почтовых провайдеров.

Возвращаясь к вашему описанию, похоже, вы используете систему раздельной конфигурации Debian. У них есть макрос, который будет изменять имя хоста HELO в зависимости от IP-адреса отправителя, который подключается к вашему серверу exim. Это не сработает для вас, если ваша электронная почта получена с одного общего сервера, а это означает, что вам нужно изменить это имя хоста HELO на основе имени домена отправителя, как показано выше.

«Правильный» способ сделать это - установить «имя основного хоста» eximʻa на любое полное каноническое имя вашего хоста. Немногие удаленные почтовые серверы даже начнут заботиться о доменной части в From: заголовок письма, и большинство из них не дает второго взгляда на доменную часть отправителя конверта, если она проходит такие вещи, как проверка SPF.

В точный шаги для этого будут зависеть от вашей установки, но похоже, что вы просто устанавливаете Exim primary_hostname переменная конфигурации в полное доменное имя, которое разрешается обратно в общедоступный IP-адрес вашего хоста, подойдет.

Вы можете найти http://www.exim.org/exim-html-current/doc/html/spec_html/ch07.html быть полезным.

По умолчанию используется имя хоста сервера, предоставленное uname, и его можно изменить через интерфейс командной строки с помощью команды hostname. Системы BSD используют файл hosts для хранения имени хоста системы.

Если вы хотите, чтобы имя хоста сервера отличалось от имени вертолета (например, как мне нравится делать с выделенным вторым IP-адресом, наряду с некоторыми другими конфигурациями), вы можете установить $ primary_hostname в конфигурации exim. Поскольку для $ helo_data по умолчанию установлено значение $ primary_hostname, это охватывает как отправку, так и конфигурацию получения, если $ helo_data оставить по умолчанию.

Зная эту переменную, может быть способ создать таблицу поиска для изменения настроек для каждого домена с помощью этого параметра. Я видел вещи в таких конфигурациях:

$ {если существует {/ etc / userdomains} {lsearch; / etc / userdomains} fail}