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

SMTP-сервер Exim4 позволяет неаутентифицированным пользователям отправлять электронные письма

Я использую Debian 7.x amd64 + Exim 4.82 на выделенном сервере, у меня также есть рабочий SMTP-сервер на общем хостинге. Я хотел бы настроить SMTP на моем VPS, который будет иметь некоторые специальные сценарии / фильтры доставки (например, отправить копии всех исходящих писем для некоторых учетных записей)

На данный момент ситуация на VPS следующая:

/etc/exim4/update-exim4.conf.conf

dc_eximconfig_configtype='smarthost'
dc_other_hostnames='myhost.mycompany.com; localhost'
dc_local_interfaces='127.0.0.1; xxx.xxx.xxx.xxx' <=== public IPv4 address
dc_readhost='mycompany.com'
dc_relay_domains='*'
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.external.com'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'

/etc/exim4/passwd.client содержание:

*:smtp.external.com:secret

Я создал самозаверяющие сертификаты и включил TLS /etc/exim4/exim4.conf.localmacros

MAIN_TLS_ENABLE = 1

Я пробовал использовать plan_text и plain_login, теперь я использую saslauthd (я уверен, что он работает, потому что я уже тестировал его ранее с postfix).

exim -bP authenticator_list вывод:

plain_saslauthd_server
login_saslauthd_server
cram_md5
plain
login

telnet myhost.mycompany.com 25 вывод:

EHLO test
250-myhost.mycompany.com Hello xxxxxxxxx [xxx.xxx.xxx.xxx]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-STARTTLS
250 HELP
...
AUTH PLAIN <random string>
503 AUTH command used when not advertised

Я предполагаю, что это потому, что аутентификатор не объявляется (в ответе EHLO нет строки 250-AUTH ...), но по умолчанию ВСЕ стандартные аутентификаторы имеют это условие

.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_in_cipher}{}{}{*}}
.endif

Я предполагаю, что мне нужно добавить AUTH_SERVER_ALLOW_NOTLS_PASSWORDS к моему /etc/exim4/exim4.conf.localmacros файл для обработки условия server_advertise_condition, но он все равно не будет рассматриваться, если у клиента не включено шифрование TLS (я прав?).

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

Удалить * из dc_relay domains. Это позволяет кому угодно ретранслировать. Если вы выполняете ретрансляцию для своей локальной сети, укажите ее IP-диапазон (ы) в dc_relay_nets.

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

Если вы добавите AUTH_SERVER_ALLOW_NOTLS_PASSWORDS на ваш /etc/exim4/exim4.conf.localmacros, вы сможете проверить аутентификацию на незащищенном соединении. Лучше всего не допускать этого, поскольку любой, кто может прослушивать сеть, может получить ваши учетные данные.

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

 daemon_smtp_ports = 25 : 587

В моей конфигурации по умолчанию серверные аутентификаторы закомментированы. Я успешно использовал их для аутентификации с использованием обычного текста и md5. Идентификатор пользователя и пароль - это второе и третье поля.