最近、Server.appを実行しているOS X 10.10Yosemiteに置き換えたSMTPリレーサーバーがあります。これはSMTPのみのリレーとして実行されており、LANからのホストのみがリレーを介してリレーアウトできるようにします。これは、サブネットからのすべてのメールが、Sender Policy Framework(SPF)などのドメインの検証済みホストから正しく送信されるようにするためです。
リレーアウトの設定は非常に簡単でした。 OS X Serverでのメールサービスの無効化 に関するAppleのドキュメントに従って、次のことを行いました。
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
を変更して、「mydestination」から$myhostname
&$mydomain
を削除する必要がありました。結果の行は次のようになります。
mydestination = localhost.$mydomain, localhost
これも機能し、Server.appは変更を認識して保持します(Sudo serveradmin settings mail:postfix
を実行して確認)。同じことがmynetworks
行の微調整にも当てはまり、リレーが受け入れられるサブネットを制限します。
私が経験している問題は、smtpd_pw_server_security_options
行への変更(具体的には、LOGIN
およびPLAIN
認証タイプの削除)が固執せず、デフォルト(以下を含む)に戻らないことです。メールサービスの開始時に不要なプレーンテキスト認証タイプ)。 Mac OS X ServerのApple固有のpostfixオプション に関するAppleのドキュメントは、LOGIN
およびPLAIN
オプションをスキップすることが有効であることを示唆しています。
私が試してみました:
smtpd_pw_server_security_options
の/Library/Server/Mail/Config/postfix/main.cf
に対する前述の変更Sudo serveradmin settings mail:postfix:smtpd_use_pw_server = no
を実行すると(mail:postfix:smtpd_use_pw_server
はYosemiteでは空の辞書のようです)Sudo serveradmin settings postfix:smtp_sasl_auth_enable = yes
を実行しています(Yosemiteではデフォルトで「no」になっているため、Appleこのオプションの機能を上記のmail:postfix:smtpd_use_pw_server
オプションから交換しただけだと思います)serveradmin
を使用してmail:postfix:smtpd_pw_server_security_options
配列からlogin
&plain
要素を削除します(例:Sudo serveradmin settings mail:postfix:smtpd_pw_server_security_options:_array_index:2 = delete
)が、CharlesEdgeが彼のkyrptedブログで言及しているように OS X Serverの「serveradminsettings」エントリの削除 についての投稿、その機能は壊れているようです。また、これらの設定は/Library/Server/Mail/Config/MailServicesOther.plist
やその他の.plistに反映されていないため、手動で変更することはできません。プレーンテキスト認証設定を部分的に選択されたチェックボックス(おそらくIMAPが無効になっているため)から完全に選択解除されたチェックボックスに切り替えることにより、Server.appを使用してプレーンテキスト認証を一時的に無効にしましたが、一貫性がなく、メールサービスを再起動した後も固執しません。
OS XでServer.appを使用しないようにアドバイスすることを除いて、どんな提案や解決策も大歓迎です。これは、私がここに入ることができない理由でAppleの製品をドッグフードしなければならないすべてのAppleショップ向けです。当然のことながら、プレーンテキスト認証を有効のままにしておくことも、明らかなセキュリティとPCI DSSコンプライアンス上の理由からのオプションではありません。
Server.appを介してSMTPプレーンテキスト認証を無効にすることはできますが、うまく機能しません(確かに、メールサービスの再起動や再起動には耐えられず、突っついているときに失われることもあります)。 Server.app内)。一時的な回避策として、「PLAIN」と「LOGIN」のプレーンテキストSMTP認証が再度有効になった場合に少なくとも自動的に通知できることに気付きました。
私はその仕事をする次の簡単な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 protected]"
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プレーンテキスト認証をプログラムで無効にすることを強くお勧めします。