Сервер Exim4 SMTP дозволяє неавторизованим користувачам надсилати електронні листи


1

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

В даний час ситуація з VPS така:

  • він надсилає локальний (вхідний) електронний лист через смарт-хост без будь-якої автентифікації
  • він надсилає весь вихідний електронний лист через смарт-хост без будь-якої автентифікації <== Небажана поведінка
  • якщо для клієнта SMTP тип аутентифікації встановлено на "Звичайний пароль", він запитує облікові дані та надсилає електронну пошту правильно
  • всі вищезазначені випадки поводяться однаково з або без TLS-шифрування, включеного на стороні клієнта

/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 (я маю рацію?).

Тому я трохи заплутався, що робити зараз .. Я хочу, щоб моя конфігурація працювала так:

  • локальні запити fetchmail (пошта) передаються локально без будь-якої автентифікації (тобто завдання cron)
  • віддалені (звичайні або зашифровані, це не має значення) запити повинні працювати з будь-якого пункту призначення (ноутбуки моїх колег) до будь-якого іншого пункту призначення (наших клієнтів), який здійснюватиме маршрутизацію через зовнішній SMTP (smarthost) і ОБОВ'ЯЗКОВО вимагає автентифікації користувача, а також він відхилить / відхилити запит

Відповіді:


3

Видалити *з dc_relay domains. Це дозволяє ретрансляції будь-кому. Якщо ви ретранслюєтесь для своєї локальної мережі, введіть її діапазон IP-адрес dc_relay_nets.

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

Якщо ви додасте AUTH_SERVER_ALLOW_NOTLS_PASSWORDSдо свого /etc/exim4/exim4.conf.localmacros, ви зможете перевірити автентифікацію на незахищеному з'єднанні. Найкраще не допускати цього, оскільки кожен, хто може нюхати мережу, може отримати ваші облікові дані.

Ви можете додати цей макрос, щоб увімкнути порт подання для віддалених користувачів. Порт подання є кращим портом для віддаленого подання.

 daemon_smtp_ports = 25 : 587

У моїй конфігурації за замовчуванням коментуються автентифікатори на стороні сервера. Я успішно використовував їх для аутентифікації простого тексту та md5. Userid та пароль - це друге та третє поля.


Гаразд, зрозуміло, але мої колеги використовують свої ноутбуки скрізь у світі (підключення до готелів, офісів клієнтів тощо). Якщо на релейні домени щось інше, ніж "*", воно відкине (відхилить / відхилить) весь запит незалежно від їх статусу аутентифікації (оскільки ці запити не надходять із "відомих" мереж)
Salaros

@Salaros Ця перевірка повинна бути після перевірки на аутентифікацію. Після того, як аутентифікація запрацює, вони повинні бути готовими. Я вимагаю, щоб усі відправники для моїх доменів надсилали через наш сервер. Це працює як очікувалося. Ви можете додати статус аутентифікації до повідомлення журналу там, де вони скинуті.
BillThor

Щойно я змінив dc_relay_domains на 'mydomain.com; alias-domain.com' Зробив update-exim4.conf і перезапустив службу exim4, все одно те саме. Я можу надсилати електронний лист від asd@mydomain.com без автентифікації
Саларос

Що з аутентифікацією? Як змусити його використовувати "зовнішнє" використання? Це не рекламується (будь ласка, прочитайте моє запитання ще раз біля "server_advertise_condition")
Саларос

Рекламувати слід лише на TLS-з'єднаннях у конфігурації за замовчуванням. Я відредагував свою першу відповідь. Визначте макрос для рекламування аутентичності на незахищених з'єднаннях. Видаліть його, як тільки ви працюєте з автором.
BillThor
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.