Я бы хотел запустить Postfix на Debian VPS, чтобы отправлять электронные письма из моего приложения. Приложение (работающее на других VPS) будет подключаться к Postfix через SMTP. Postfix не должен обрабатывать входящую электронную почту; это просто отправка исходящих сообщений.
Чтобы предотвратить использование открытого ретранслятора, следует использовать аутентификацию SASL. Однако я не хочу запускать Dovecot или MySQL для аутентификации SASL.
Как я могу настроить аутентификацию SASL с помощью простого файла (содержащего имена пользователей и пароли)?
Я уже нашел похожий вопрос; однако удовлетворительных ответов там не было.
Postfix в настоящее время поддерживает только два метода аутентификации SASL. Один из них - Dovecot, который вам не нужен. Другой - Cyrus, который настолько близок к тому, что вы хотите, насколько это возможно, не переписывая Postfix. Это требует запуска отдельного демона аутентификации (saslauthd
), но файл аутентификации легко редактировать и обновлять.
Основы использования Cyrus SASL можно найти на сайт документации postfix, но вот краткое описание. пожалуйста посмотрите ссылку, если что-то запутывает!
Начните с установки Cyrus SASL с плагином sasldb
. (Как это сделать, оставлено в качестве упражнения для читателя; предположительно, есть пакет в любой системе пакетов, которую использует ваша марка unix.) Поскольку связь между Postfix и SASL будет осуществляться через сокет домена unix, вы можете захотеть добавьте постфикс в группу SASL и убедитесь, что эта группа имеет права на чтение и выполнение в каталоге /var/run/saslauthd
.
Настройте SASL для использования sasldb, отредактировав /etc/sasl2/smtpd.conf:
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
Плагин sasldb означает, что sasl будет использовать файл Berkeley DB для имен пользователей и паролей. Вы добавляете пользователей с помощью команды saslpasswd2
:
$ saslpasswd2 -c -u example.com username
Password:
Again (for verification):
Обратите внимание, что вы указываете домен вместе с именем пользователя, и пользователю нужно будет использовать «username@example.com», а не просто «username» при аутентификации.
Вы можете проверить, какие пользователи были введены, запустив sasldblistusers2
.
Запустите saslauthd и убедитесь, что аутентификация работает, выполнив
testsaslauthd -u username@example.com -p password
Как только это будет сделано, скажите Postfix использовать SASL и сообщить Сайрусу, что это SMTP, который он аутентифицирует, отредактировав /etc/postfix/main.cf, чтобы он содержал
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
Затем перезагрузите постфикс, и все должно быть установлено.
Чтобы предотвратить использование открытого ретранслятора, следует использовать аутентификацию SASL.
SASL - лишь один из множества способов предотвратить это. Другой вариант - занести в белый список IP-адреса, которые вы используете на других VPS, или потребовать сертификаты клиентов TLS (можно сказать, что это наиболее безопасный способ).
Просто настройте подписывающий CA на машине postfix и подпишите один сертификат для каждого VPS, который вы хотите отправить по электронной почте.
Затем потребуйте полную проверку сертификата клиента для всех отправленных писем; отключить любые другие способы отправки.
То, о чем вы спрашиваете, невозможно, поскольку postfix не поддерживает SASL напрямую.
Просто проясняю несколько вещей,
Создание учетной записи в sasldb:
% saslpasswd2 -c -u fqdn username
Проверка аутентификации:
% testsaslauthd -u username -p password
(примечание: имя пользователя не за которым следует fqdn)
Еще хочу добавить, что создание учетной записи root
% saslpasswd2 -c -u example.com root
не позволит вам пройти аутентификацию,
% testsaslauthd -u root -p some_password
0: NO "authentication failed"
Но это не ошибка. Это просто средство безопасности.
Если вам не нужно обрабатывать входящую почту, не беспокойтесь об аутентификации. Просто заблокируйте входящий трафик с помощью брандмауэра и / или ограничьте его только локальным хостом.
inet_interfaces = 127.0.0.1
Больше нет проблем с открытым ретранслятором, и вы также избежите осложнений для приложений, которым необходимо отправлять почту через postfix.