Начальная загрузка в runlevel 1. Передача 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 с разделенной конфигурацией. Однако этого должно быть достаточно, чтобы вы начали :)