Как я получаю отключение аутентификации открытого текста SMTP, чтобы придерживаться на OS X 10.10 Server.app Yosemite
У меня есть сервер ретрансляции 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
параметры должны быть действительными.
Я пытался:
- вышеупомянутые модификации
smtpd_pw_server_security_options
в/Library/Server/Mail/Config/postfix/main.cf
- Как упомянуто в документации по параметрам Postfix для Apple,
sudo serveradmin settings mail:postfix:smtpd_use_pw_server = no
(mail:postfix:smtpd_use_pw_server
кажется пустой словарь под Йосемити) - Бег
sudo serveradmin settings postfix:smtp_sasl_auth_enable = yes
(по умолчанию это означает "нет" в Yosemite, поэтому я предполагаю, что Apple просто поменяла функциональность этой опции с приведенного вышеmail:postfix:smtpd_use_pw_server
опция) - С помощью
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 " в OS X Server, эта функциональность, похоже, нарушена. И нет, эти настройки не отражаются в/Library/Server/Mail/Config/MailServicesOther.plist
или любой другой.plist, поэтому изменение этих параметров вручную не представляется возможным.
Я временно отключил проверку подлинности открытого текста с помощью Server.app, переключив параметр проверки подлинности в виде открытого текста с частично выбранного флажка (предположительно, потому что IMAP отключен) на полностью отмененный флажок, но он непоследователен и не прилипает после перезапуска службы почты.
Будем весьма благодарны за любые предложения или решения, за исключением того, что мы не будем использовать Server.app на OS X. Это для магазина Apple, который должен покупать продукты Apple по причинам, по которым я не могу здесь зайти. Естественно, оставить включенным проверку подлинности в виде открытого текста также невозможно по очевидным причинам безопасности и соответствия требованиям PCI DSS.
1 ответ
Я могу - с небольшим волнением - отключить аутентификацию открытого текста 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://faultserver.ru/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.