Я хотел бы запустить Postfix на Debian VPS для отправки электронной почты из моего приложения. Приложение (работающее на других VPS) будет подключаться к Postfix через SMTP. Postfix не должен обрабатывать входящую почту; это просто отправка исходящих сообщений.
Чтобы не быть открытым реле, следует использовать аутентификацию SASL. Однако я не хочу запускать Dovecot или MySQL для аутентификации SASL.
Как настроить аутентификацию SASL с помощью простого файла (содержащего имена пользователей и пароли)?
Я уже нашел похожий вопрос ; однако, там нет удовлетворительных ответов.
Ответы:
В настоящее время Postfix поддерживает только два метода аутентификации SASL. Одним из них является голубятня, которую вы не хотите. Другой - Cyrus, который настолько близок к тому, что вы хотите, насколько это возможно без переписывания Postfix. Это включает запуск отдельного демона аутентификации (
saslauthd
), но файл аутентификации легко редактировать и обновлять.Основы использования Cyrus SASL можно найти на сайте документации postfix , но вот краткое описание. Пожалуйста, посмотрите на ссылку, если что-то не так!
Начните с установки Cyrus SASL с плагином
sasldb
. (Как это сделать, оставлено в качестве упражнения для читателя; предположительно, есть пакет в любой системе пакетов, которую использует ваш бренд Unix.) Поскольку связь между Postfix и SASL будет осуществляться через сокет домена unix, вы можете захотеть добавьте postfix в группу SASL и убедитесь, что у этой группы есть права на чтение и выполнение каталога/var/run/saslauthd
.Настроить SASL
Сконфигурируйте SASL для использования sasldb, отредактировав /etc/sasl2/smtpd.conf:
Плагин sasldb означает, что sasl будет использовать файл Berkeley DB для имен пользователей и паролей. Вы добавляете пользователей с помощью команды
saslpasswd2
:Обратите внимание, что вы указываете домен вместе с именем пользователя, и пользователь должен будет использовать «username@example.com», а не просто «username» при аутентификации.
Вы можете проверить, какие пользователи были введены, запустив
sasldblistusers2
.Запустите saslauthd и убедитесь, что аутентификация работает, выполнив
Настроить Postfix
Как только это будет сделано, скажите Postfix использовать SASL и сообщить Cyrus, что это SMTP, который он аутентифицирует, отредактировав /etc/postfix/main.cf так, чтобы он содержал
Затем перезагрузите постфикс, и вы должны быть установлены.
источник
sasldblistusers2
правильно выводит список пользователей, который я добавил. Однако, при выполненииtestsaslauthd
, я получаю этот результат:0: NO "authentication failed"
. Ты хоть представляешь, как я могу это исправить? Это из моего/var/log/auth.log
:saslauthd[30471]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=pam] [reason=PAM auth error]
-s smtpd
к нему. Если установитьMECHANISMS="sasldb"
в/etc/default/saslauthd
и перезапустить saslauthd, я получаю тот же результат с testsaslauthd. В журнале аутентификации показано другое сообщение:saslauthd[3706]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=sasldb] [reason=Unknown]
testsaslauthd -u username -r example.com -p XXX
возвращает0: OK "Success."
. Теперь я проверю, сможет ли Postfix обойти это ...-s smtpd
вы заставите его использовать PAM вместо sasldb, так что не делайте этого ...SASL - только один из многочисленных способов предотвратить это. Другим может быть внесение в белый список IP-адресов, которые вы используете на других VPS, или требование клиентских сертификатов TLS (можно сказать, что это наиболее безопасный способ).
Просто установите подписывающий CA на компьютере с постфиксом и подпишите один сертификат на VPS, который вы хотите отправить по электронной почте.
Затем требуется полная проверка сертификата клиента для всей отправленной почты; отключить любые другие способы представления.
То, что вы спрашиваете, невозможно, так как postfix не поддерживает SASL напрямую.
источник
Просто проясняю несколько вещей,
Создание учетной записи в sasldb:
Проверка подлинности:
(примечание: за именем пользователя не следует fqdn)
Я также хотел бы добавить, что создание учетной записи root
не позволит вам аутентифицироваться,
Но это не ошибка. Это просто функция безопасности.
источник
Если вам не нужно обрабатывать входящую почту, не пытайтесь пройти аутентификацию. Просто заблокируйте входящий трафик с помощью брандмауэра и / или ограничьте его только локальным хостом.
Больше нет проблем с открытой ретрансляцией, и вы также избежите усложнения приложений, которым необходимо отправлять почту через postfix.
источник