Назад | Перейти на главную страницу

Как мне отключить аутентификацию открытого текста SMTP, чтобы она оставалась на OS X 10.10 Yosemite's Server.app

У меня есть сервер ретрансляции SMTP, который я недавно заменил на OS X 10.10 Yosemite с сервером Server.app. Он работает как ретранслятор только для SMTP, позволяя ретранслировать только хосты из локальной сети. Мы делаем это так, чтобы вся почта из нашей подсети правильно отправлялась с проверенного хоста для нашего домена для Sender Policy Framework (SPF) и т. Д.

Настроить ретрансляцию было довольно просто. Следуя документации Apple для Отключение почтовых служб на OS X Server, Я сделал следующее:

sudo serveradmin settings mail:global:skip_enable_service_check = yes
sudo serveradmin settings mail:imap:enable_imap = no
sudo serveradmin settings mail:imap:enable_pop = no
sudo serveradmin settings mail:imap:enable_sieve = no
sudo serveradmin stop mail
sudo serveradmin start mail

Это гарантировало, что работает только SMTP, и останется так после перезагрузки или перезапуска почтовой службы. Поскольку имя хоста сервера ретрансляции SMTP является поддоменом в домене, для которого он ретранслирует, мне также пришлось изменить /Library/Server/Mail/Config/postfix/main.cf удалять $myhostname & $mydomain из "mydestination" результирующая строка будет следующей:

mydestination = localhost.$mydomain, localhost

Это также сработало, Server.app распознал и сохранил изменение (что подтверждается запуском sudo serveradmin settings mail:postfix). То же самое и с настройками mynetworks строка, чтобы указать, из каких подсетей принимается ретрансляция.

Проблема, с которой я столкнулся, заключается в том, что изменения в smtpd_pw_server_security_options линия (в частности, чтобы удалить LOGIN & PLAIN типы аутентификации) не сохранятся и вернутся к значениям по умолчанию (включая нежелательные типы аутентификации в виде открытого текста) при запуске почтовой службы. Документация Apple по Параметры постфикса для Apple в Mac OS X Server подразумевают, что пропуск LOGIN & PLAIN параметры должны быть действительными.

Я пытался:

  1. вышеупомянутые модификации smtpd_pw_server_security_options в /Library/Server/Mail/Config/postfix/main.cf
  2. Как упоминалось в документации по параметрам постфикса для Apple, запуск sudo serveradmin settings mail:postfix:smtpd_use_pw_server = no (mail:postfix:smtpd_use_pw_server вроде пустой словарь под Йосемити)
  3. Бег sudo serveradmin settings postfix:smtp_sasl_auth_enable = yes (в Йосемити по умолчанию установлено «нет», поэтому я предполагаю, что Apple просто поменяла местами функциональность этой опции из приведенного выше mail:postfix:smtpd_use_pw_server вариант)
  4. С помощью serveradmin удалить login & plain элементы из mail:postfix:smtpd_pw_server_security_options массив (например, sudo serveradmin settings mail:postfix:smtpd_pw_server_security_options:_array_index:2 = delete), но, как упоминает Чарльз Эдж в своем сообщении в блоге о Удаление записей 'serveradmin settings' в OS X Server, похоже, что эта функция не работает. И нет, эти настройки не отражаются в /Library/Server/Mail/Config/MailServicesOther.plist или любой другой .plist, поэтому изменение их вручную не представляется возможным.

Я временно отключил аутентификацию по обычному тексту с помощью Server.app, переключив настройку аутентификации с открытым текстом с частично установленного флажка (предположительно из-за того, что IMAP отключен) на полностью снятый флажок, но он несовместим и не сохраняется после перезапуска почтовой службы.

Мы будем очень благодарны за любые предложения или решения, за исключением совета не использовать Server.app в OS X. Это для магазина Apple, который должен кормить продукты Apple по причинам, о которых я не могу здесь рассказать. Естественно, включение аутентификации по обычному тексту также не является вариантом по очевидным причинам безопасности и соответствия требованиям PCI DSS.

Я могу - немного поиграть - отключить аутентификацию открытого текста SMTP через Server.app, хотя он не очень хорошо приживается (конечно, не переживает перезагрузку или перезапуск почтовой службы, а иногда даже теряется, когда копается в Server.app). Я понял, что в качестве временного обходного пути я могу, по крайней мере, автоматически уведомлять, если аутентификация SMTP с открытым текстом «PLAIN» и «LOGIN» будет повторно включена.

Я создал следующий сценарий быстрого bash, который выполняет свою работу:

#!/bin/bash

# 
# smtp_plaintext_auth_check - check to see if plaintext auth is supported by SMTP service and warn if it is
# 
# v0.1   2015-03-12 - Morgan Aldridge <http://serverfault.com/users/13496/morgant>
#                     Initial version.
# 

admin_emails="email@domain.tld"
debug=false

host=$(hostname)
date=$(date +%Y-%m-%d-%H%M)

plaintext_auth_enabled=false

# check via serveradmin to see if plaintext auth is allowed by the SMTP server
if $debug; then echo "Checking Mail service to see if SMTP plaintext auth is supported..."; fi
while IFS= read -r line; do
    if [[ "$line" =~ (plain|login) ]]; then
        if $debug; then echo "  Found '${BASH_REMATCH[1]}' SMTP auth method which is plaintext!"; fi
        plaintext_auth_enabled=true
    fi
done <<< "$(serveradmin settings mail:postfix:smtpd_pw_server_security_options)"

# if plaintext auth is enabled, notify admins
if $plaintext_auth_enabled; then
    if $debug; then echo "Notifying admins via email that SMTP plaintext auth IS supported. That's bad!"; fi
    mail -s "Error on $host: SMTP plaintext auth is allowed! $date" $admin_emails <<-EOM
        ERROR on $host: SMTP plaintext auth appears to be allowed by the Mail service! This is a security risk and against PCI DSS compliance!

        Please resolve ASAP!
    EOM
else
    if $debug; then echo "Phew, SMTP plaintext auth doesn't appear to be supported. That's good."; fi
fi

Опять же, это обходной путь и я бы предпочел программно отключить аутентификацию открытого текста SMTP.