Как установить exim4 для отправки электронного письма где-нибудь, но только от авторизованных пользователей?

Начальная загрузка в runlevel 1. Передача 1 как дополнительный аргумент на строке ядра от загрузчика.

4
задан 28 November 2011 в 16:39
1 ответ

Это похоже на мою настройку exim. Изнутри своей сети я могу отправлять электронную почту в любой домен, но из-за пределов сети единственный почтовый exim будет доставлен в мой локальный домен, , если пользователь сначала не аутентифицируется в exim. Таким образом, я могу отправлять почту через свой почтовый сервер из любой точки мира, если я сначала аутентифицируюсь.

Критические разделы моей конфигурации:

domainlist local_domains = @ : example.com
domainlist relay_to_domains =
hostlist   relay_from_hosts = 127.0.0.1 : 192.168.0.0/24 : 2001:111:1111::/64

Это в основном устанавливает мой локальный домен, для которого exim знает, что это «дом» 'на example.com . Он также устанавливает диапазоны подсетей, для которых exim разрешено ретранслировать любую почту. relay_to_domains пуст, потому что нет других доменов, на которые я буду ретранслировать бланкет, кроме example.com .

tls_advertise_hosts = *

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

acl_check_rcpt:
    [...]
    accept  hosts         = +relay_from_hosts
    accept  authenticated = *
    require message = relay not permitted
        domains = +local_domains : +relay_to_domains

Этот acl проверяет, куда идет почта и кто ее отправил, прежде чем решить, нужно ли или не ретранслировать. Первая строка передает почту от хостов в ранее определенной внутренней сети. Вторая строка передает почту от любого аутентифицированного пользователя. Третий и четвертый требуют, чтобы, если какое-либо предыдущее условие не было выполнено, ретранслировать только мои локальные домены.

Последний раздел - аутентификаторы, так что exim знает, как выглядит аутентифицированный пользователь. Мой выглядит так:

plain_saslauthd_server:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${if saslauthd{{$auth2}{$auth3}}{1}{0}}
  server_set_id = $auth2
  server_prompts = :

login_saslauthd_server:
  driver = plaintext
  public_name = LOGIN
  server_prompts = "Username:: : Password::"
  # don't send system passwords over unencrypted connections
  server_condition = ${if saslauthd{{$auth1}{$auth2}}{1}{0}}
  server_set_id = $auth1

Очевидно, для этого требуется сборка exim, в которой скомпилирована возможность sasl, вместе с работающим демоном SASL в системе. Я использую Cyrus SASLD, и по памяти его довольно просто установить и забыть.

I ' m на самом деле запускает это в OpenBSD, поэтому не уверен, как эти шаги точно будут переведены в систему Ubuntu с разделенной конфигурацией. Однако этого должно быть достаточно, чтобы вы начали :)

5
ответ дан 3 December 2019 в 03:21

Теги

Похожие вопросы