/etc/postfix/main.cf
.
mail.falcot.com
. Pertanyaan ini yang diajukan secara default, namun konfigurasi yang diembannya tidak cukup lengkap untuk kebutuhan Falcot, karenanya administrator menjalankan perintah dpkg-reconfigure postfix
agar dapat menyesuaikan lebih banyak parameter.
localhost
, namun domain utama falcot.com
perlu ditambahkan sendiri. Lebih umumnya, pertanyaan ini seharusnya biasanya dijawab dengan seluruh nama domain yang mana mesin ini seharusnya melayani sebagai sebuah MX server; dengan kata lain, seluruh nama domain yang mana disebutkan DNS bahwa mesin ini akan menerima surel. Informasi ini berpangkal pada variabel mydestination
pada berkas konfigurasi Postfix — /etc/postfix/main.cf
.
192.168.0.0/16
ke jawaban default. Jika pertanyaan itu tidak muncul, variabel yang relevan dalam berkas konfigurasi adalah mynetworks
, seperti yang terlihat dalam contoh di bawah ini.
procmail
. Alat ini memungkinkan pengguna untuk memilah surel masuk mereka menurut aturan yang disimpan dalam berkas ~/.procmailrc
mereka. Postfix dan Exim4 menyarankan procmail secara baku, tapi ada alternatif seperti maildrop atau filter Sieve.
Contoh 11.1. Berkas/etc/postfix/main.cf
awal
# See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on # fresh installs. compatibility_level = 2 # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_security_level=may smtp_tls_CApath=/etc/ssl/certs smtp_tls_security_level=may smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = mail.falcot.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = mail.falcot.com, falcot.com, localhost.localdomain, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/16 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all default_transport = smtp relay_transport = smtp inet_protocols = all myorigin = /etc/mailname
virtual_alias_domains
, dan mereferensi berkas pemetaan alamat dalam variabel virtual_alias_maps
.
virtual_alias_domains = falcotsbrand.com virtual_alias_maps = hash:/etc/postfix/virtual
/etc/postfix/virtual
menjelaskan pemetaan dengan sintaks yang agak sederhana: setiap baris berisi dua field yang dipisahkan oleh spasi; field pertama adalah nama alias, field kedua adalah daftar alamat surel tujuan pengalihan. Sintaks khusus @domain.com
mencakup semua sisa alias dalam suatu domain.
[email protected] [email protected] [email protected] [email protected], [email protected] # The alias below is generic and covers all addresses within # the falcotsbrand.com domain not otherwise covered by this file. # These addresses forward email to the same user name in the # falcot.com domain. @falcotsbrand.com @falcot.com
/etc/postfix/virtual
tabel postfix /etc/postfix/virtual.db
perlu diperbarui menggunakan sudo postmap /etc/postfix/virtual
.
virtual_mailbox_domains
, dan mereferensi ke berkas pemetaan kotak surat di virtual_mailbox_maps
. Parameter virtual_mailbox_base
berisi direktori di mana kotak pesan akan disimpan.
virtual_mailbox_domains = falcot.org virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_mailbox_base = /var/mail/vhosts
virtual_uid_maps
(dan virtual_gid_maps
) mengacu ke berkas yang berisi pemetaan antara alamat surel dan sistem pengguna (dan kelompok) yang "memiliki" kotak surat yang sesuai. Agar semua kotak surat dimiliki oleh pemilik/kelompok yang sama, sintaks static:5000
menetapkan UID/GID tertentu (yang bernilai 5000 di sini).
/etc/postfix/vmailbox
cukup sederhana: dua field dipisahkan dengan spasi. Field pertama adalah alamat surel dalam salah satu domain virtual, dan field kedua adalah lokasi kotak surat yang terkait (relatif terhadap direktori yang ditentukan dalam virtual_mailbox_base). Jika nama kotak surat berakhir dengan garis miring (/
), surel akan disimpan dalam format maildir; jika tidak, format tradisional mbox akan digunakan. Format maildir menggunakan seluruh direktori untuk menyimpan kotak surat, masing-masing pesan disimpan dalam berkas terpisah. Dalam format mbox, seluruh kotak surat disimpan dalam satu berkas, dan setiap baris yang dimulai dengan "From
" (From
diikuti dengan spasi) menandai awal pesan baru.
# Surel Jean disimpan sebagai maildir, dengan # satu berkas per surel dalam suatu direktori terdedikasi [email protected] falcot.org/jean/ # Surel Sophie's disimpan dalam suatu berkas "mbox" # tradisional dengan semua surel disambung ke dalam satu berkas tunggal [email protected] falcot.org/sophie
soft_bounce = yes
. Dengan menambahkan direktif tipe tolak dengan warn_if_reject
hanya pesan log yang akan direkam daripada menolak permintaan tersebut.
smtpd_client_restrictions
mengendalikan mesin mana yang diperbolehkan untuk berkomunikasi dengan server surel.
Contoh 11.2. Pembatasan Berbasis Alamat Klien
smtpd_client_restrictions = permit_mynetworks, warn_if_reject reject_unknown_client_hostname, check_client_access hash:/etc/postfix/access_clientip, reject_rhsbl_reverse_client dbl.spamhaus.org, reject_rhsbl_reverse_client rhsbl.sorbs.net, reject_rbl_client zen.spamhaus.org, reject_rbl_client dnsbl.sorbs.net
permit_mynetworks
, yang digunakan sebagai aturan pertama, menerima semua surel yang datang dari mesin jaringan lokal (seperti yang didefinisikan oleh variabel konfigurasi mynetworks
).
warn_if_reject
ke direktif reject_unknown_client
: pengubah ini mengubah penolakan menjadi peringatan sederhana yang tercatat dalam log. Administrator dapat kemudian mengawasi jumlah pesan yang akan ditolak jika aturan yang benar-benar ditegakkan, dan membuat keputusan kemudian jika mereka ingin memberlakukan aturan itu.
check_client_access
directive allows the administrator to set up a blacklist and a whitelist of email servers, stored in the /etc/postfix/access_clientip
file. Servers in the whitelist are considered as trusted, and the emails coming from there therefore do not go through the following filtering rules.
HELO
(atau EHLO
), diikuti dengan nama server surel pengirim. Memeriksa validitas nama ini bisa menarik. Untuk sepenuhnya menegakkan pembatasan yang tercantum dalam smtpd_helo_restrictions
opsi smtpd_helo_required
perlu diaktifkan. Jika tidak, klien dapat melewati pembatasan dengan tidak mengirimkan perintah HELO
/EHLO
.
Contoh 11.3. Pembatasan pada nama yang diumumkan di EHLO
smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, warn_if_reject reject_unknown_helo_hostname, check_helo_access hash:/etc/postfix/access_helo, reject_rhsbl_helo multi.surbl.org
permit_mynetworks
pertama memungkinkan semua mesin di jaringan lokal untuk memperkenalkan diri dengan bebas. Hal ini penting, karena beberapa program email tidak menghormati bagian dari protokol SMTP ini secara cukup memadai, dan mereka dapat memperkenalkan diri dengan nama-nama yang tidak masuk akal.
reject_invalid_helo_hostname
rule rejects emails when the EHLO
announce lists a syntactically incorrect hostname. The reject_non_fqdn_helo_hostname
rule rejects messages when the announced hostname is not a fully-qualified domain name (including a domain name as well as a host name). The reject_unknown_helo_hostname
rule rejects messages if the announced name does not exist in the DNS. Since this last rule unfortunately leads to a lot of rejections, the administrators turned its effect to a simple warning with the warn_if_reject
modifier as a first step; they may decide to remove this modifier at a later stage, after auditing the results of this rule.
reject_rhsbl_helo
memungkinkan untuk menentukan daftar hitam untuk memeriksa nama host terhadap RHSBL.
permit_mynetworks
sebagai aturan pertama memiliki efek samping yang menarik: aturan berikutnya hanya diterapkan ke host di luar jaringan lokal. Hal ini memungkinkan mencekal semua host yang mengumumkan diri mereka sebagai bagian dari jaringan falcot.com
, misalnya dengan menambahkan baris falcot.com REJECT Anda tidak berada dalam jaringan kami!
ke dalam berkas / postfix/dll/access_helo
.
MAIL FROM
dari protokol SMTP; sekali lagi, informasi ini dapat divalidasi dalam beberapa cara yang berbeda.
Contoh 11.4. Pemeriksaan pengirim
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/access_sender, reject_unknown_sender_domain, reject_unlisted_sender, reject_non_fqdn_sender, reject_rhsbl_sender rhsbl.sorbs.net
/etc/postfix/access_sender
memetakan beberapa perlakuan khusus untuk beberapa pengirim. Ini biasanya berarti memasukkan beberapa pengirim ke daftar putih atau daftar hitam.
reject_unknown_sender_domain
rule requires a valid sender domain, since it is needed for a valid address. The reject_unlisted_sender
rule rejects local senders if the address does not exist; this prevents emails being sent from an invalid address in the falcot.com
domain, and messages emanating from [email protected]
are only accepted if such an address really exists.
reject_non_fqdn_sender
menolak surel yang mengaku berasal dari alamat tanpa fully-qualified domain name. Dalam prakteknya, ini berarti menolak surel yang datang dari user@machine
: alamat harus diumumkan sebagai [email protected]
atau [email protected]
.
reject_rhsbl_sender
menolak pengirim berdasarkan layanan RHSBL (berbasis domain).
RCPT TO
dalam protokol SMTP. Alamat ini juga memerlukan validasi, bahkan jika itu mungkin kurang relevan daripada pemeriksaan atas alamat pengirim.
Contoh 11.5. Pemeriksaan penerima
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, reject_unlisted_recipient, reject_non_fqdn_recipient, permit
reject_unauth_destination
adalah aturan dasar yang mempersyaratkan pesan dari luar ditujukan kepada kami; pesan yang dikirim ke alamat yang tidak dilayani oleh server ini akan ditolak. Tanpa aturan ini, server menjadi relay terbuka yang memungkinkan spammer untuk mengirim surel yang tidak diinginkan; aturan ini wajib, dan itu paling baik disertakan di bagian awal dari daftar, sehingga tidak ada aturan lainnya mungkin mengotorisasi pesan sebelum tujuan telah diperiksa.
reject_unlisted_recipient
menolak pesan yang dikirim ke pengguna lokal yang tidak ada. Ini masuk akal. Akhirnya, aturan reject_non_fqdn_recipient
menolak alamat yang bukan fully-qualified; ini menjadikannya mustahil untuk mengirim surel ke jean
atau jean@machine
, dan memerlukan menggunakan alamat lengkap, seperti [email protected]
atau [email protected]
.
permit
di akhir tidak diperlukan. Tapi bisa berguna di akhir daftar batasan untuk membuat kebijakan default eksplisit.
DATA
SMTP dikirimkan sebelum isi pesan. Tidak memberikan informasi apapun per se, selain mengumumkan apa yang datang berikutnya. Masih bisa dipersyaratkan untuk pemeriksaan.
reject_unauth_pipelining
menyebabkan pesan ditolak jika pihak pengirim mengirim perintah sebelum balasan atas perintah sebelumnya dikirim. Ini penjaga terhadap optimasi yang umum digunakan oleh robot spammer, karena mereka biasanya tidak peduli isi balasan dan fokus hanya pada mengirim surel sebanyak mungkin dalam waktu sependek mungkin.
RCPT TO
secara baku.
EHLO
yang tidak valid, Postfix tahu pengirim dan penerima ketika mengumumkan penolakan. Ini kemudian mencatat log pesan yang lebih eksplisit daripada yang bisa dilakukan jika transaksi telah terputus dari awal. Selain itu, sejumlah klien SMTP tidak mengharapkan kegagalan pada perintah SMTP awal, dan klien ini akan kurang terganggu oleh penolakan akhir ini.
smtpd_delay_reject
.
Contoh 11.7. Memfungsikan penyaring berbasis konten
header_checks = regexp:/etc/postfix/header_checks body_checks = regexp:/etc/postfix/body_checks
Contoh 11.8. Berkas contoh /etc/postfix/header_checks
/^X-Mailer: GOTO Sarbacane/ REJECT I fight spam (GOTO Sarbacane) /^Subject: *Your email contains VIRUSES/ DISCARD virus notification
GOTO Sarbacane
(software surel massal) ditemukan, pesan tersebut akan ditolak. Ekspresi kedua mengendalikan subjek pesan; jika itu menyebutkan pemberitahuan virus, kita bisa memutuskan untuk tidak menolak pesan tetapi untuk membuangnya segera sebagai gantinya.
check_policy_service
sebagai pembatasan tambahan:
smtpd_recipient_restrictions = permit_mynetworks, [...] check_policy_service inet:127.0.0.1:10023
postgrey
daemon and send it information concerning the relevant message. On its side, Postgrey considers the IP address/sender/recipient triplet and checks in its database whether that same triplet has been seen recently. If so, Postgrey replies that the message should be accepted; if not, the reply indicates that the message should be temporarily rejected, and the triplet gets recorded in the database.
smtpd_restriction_classes
, dan didefinisikan dengan cara yang sama sebagai smtpd_recipient_restrictions
. Direktif check_recipient_access
kemudian mendefinisikan tabel pemetaan penerima tertentu untuk seperangkat batasan.
Contoh 11.9. Mendefinisikan kelas pembatasan dalam main.cf
smtpd_restriction_classes = greylisting, aggressive, permissive greylisting = check_policy_service inet:127.0.0.1:10023 aggressive = reject_rbl_client sbl-xbl.spamhaus.org, check_policy_service inet:127.0.0.1:10023 permissive = permit smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_recipient_access hash:/etc/postfix/recipient_access
Contoh 11.10. Berkas /etc/postfix/recipient_access
# Unfiltered addresses [email protected] permissive [email protected] permissive [email protected] permissive # Aggressive filtering for some privileged users [email protected] aggressive # Special rule for the mailing-list manager [email protected] reject_unverified_sender # Greylisting by default falcot.com greylisting
clamav
from the homonymous package.
clamav-milter
. milter (singkatan dari mail filter) adalah sebuah program penyaringan yang dirancang khusus untuk menyambung dengan server surel. Suatu milter menggunakan standar antarmuka pemrograman aplikasi (API) yang memberikan kinerja lebih baik daripada filter eksternal ke server surel. Milters awalnya diperkenalkan oleh Sendmail, tetapi Postfix segera mengikutinya.
dpkg-reconfigure clamav-milter
. Ketika diminta untuk "Antarmuka komunikasi dengan Sendmail", jawablah "inet:[email protected]
".
dpkg-reconfigure clamav-base
.
/etc/postfix/main.cf
:
# Virus check with clamav-milter smtpd_milters = inet:[127.0.0.1]:10002
systemctl reload postfix
harus dijalankan sehingga perubahan ini diperhitungkan.
include
directive it must have one.
Name: example.org Type: TXT TTL: 3600 Data: v=spf1 a mx -all
falcot.org
.
#
host -t TXT falcot.org
falcot.org descriptive text "v=spf1 ip4:199.127.61.96 +a +mx +ip4:206.221.184.234 +ip4:209.222.96.251 ~all"
postfix
dapat memeriksa data SPF untuk surel masuk menggunakan paket postfix-policyd-spf-python, agen kebijakan yang ditulis dalam Python. Berkas /usr/share/doc/postfix-policyd-spf-python/README. Debian
menjelaskan langkah-langkah yang diperlukan untuk mengintegrasikan agen ke dalam postfix, jadi kami tidak akan mengulanginya di sini.
/etc/postfix-policyd-spf-python/policyd-spf.conf
, yang sepenuhnya didokumentasikan dalam policyd-spf.conf(5) dan /usr/share/doc/postfix-policyd-spf-python/policyd-spf.conf.commented.gz
. Parameter konfigurasi utama adalah HELO_reject
dan Mail_From_reject
, yang mengkonfigurasi apakah surel harus ditolak (Fail
) atau diterima dengan header yang ditambah (False
), jika pemeriksaan gagal. Yang terakhir ini sering berguna, ketika pesan diproses lebih lanjut oleh filter spam.
Header_Type
harus diatur ke AR
.
postfix
, menambahkan tanda tangan digital yang terkait dengan nama domain ke header surel keluar. Pihak penerima dapat memvalidasi bidang badan pesan dan header dengan memeriksa tanda tangan terhadap kunci publik, yang diperoleh dari catatan DNS pengirim.
opendkim-genkey -s SELECTOR -d DOMAIN
. SELECTOR harus merupakan nama unik untuk kunci tersebut. Ini bisa sekadar "mail" atau tanggal pembuatan, jika Anda berencana untuk merotasi kunci.
Contoh 11.11. Membuat sebuah kunci privat untuk menandatangani Surel dari falcot.com
#
opendkim-genkey -s mail -d falcot.com -D /etc/dkimkeys
#
chown opendkim.opendkim /etc/dkimkeys/mail.*
/etc/dkimkeys/mail.private
dan /etc/dkimkeys/mail.txt
dan mengatur kepemilikan yang sesuai. Berkas pertama berisi kunci pribadi, dan yang terakhir adalah kunci publik yang perlu ditambahkan ke DNS:
Name: mail._domainkey Type: TXT TTL: 3600 Data: "v=DKIM1; h=sha256; k=rsa; s=email; p=[...]"
-b 1024
untuk memilih ukuran kunci yang lebih kecil. Jika opendkim-testkey
berhasil, entri telah berhasil disiapkan. Sintaks dari entri tersebut dijelaskan di sini:
SOCKET
dan RUNDIR
harus dipilih di /etc/default/opendkim
. Harap dicatat bahwa SOCKET
harus dapat diakses dari postfix
di lingkungan chroot-nya. Konfigurasi lebih lanjut dilakukan di /etc/opendkim.conf
. Berikut ini adalah kutipan konfigurasi, yang memastikan bahwa Domain
"falcot.com" dan semua subdomain (SubDomain
) ditandatangani oleh Selector
"mail" dan kunci privat tunggal (KeyFile
) /etc/dkimkeys/mail.private
. Canonicalization
"relaxed" baik untuk header dan body mentolerir modifikasi ringan (oleh perangkat lunak milis, misalnya). Filter berjalan baik dalam Mode
penandatanganan ("s") dan verifikasi ("v"). Jika tanda tangan gagal untuk memvalidasi (On-BadSignature
), surat harus dikarantina ("q").
[...] Domain falcot.com KeyFile /etc/dkimkeys/mail.private Selector mail [...] Canonicalization relaxed/relaxed Mode sv On-BadSignature q SubDomains yes [...] Socket inet:12345@localhost [...] UserID opendkim
KeyTable
), domain (SigningTable
), dan untuk menentukan host internal atau terpercaya (InternalHosts
, ExternalIgnoreList
), yang dapat mengirim surel melalui server sebagai salah satu domain penandatanganan tanpa kredensial.
/etc/postfix/main.cf
membuat postfix
memakai filter:
milter_default_action = accept non_smtpd_milters = inet:localhost:12345 smtpd_milters = inet:localhost:12345
/etc/postfix/master.cf
sebagai gantinya.
/usr/share/doc/opendkim/
dan halaman manual opendkim(8) dan opendkim.conf(5).
_dmarc
dan tindakan yang harus diambil ketika surel yang berisi domain Anda sebagai host pengirim gagal divalidasi menggunakan DKIM dan SPF.
#
host -t TXT _dmarc.gmail.com
_dmarc.gmail.com descriptive text "v=DMARC1; p=none; sp=quarantine; rua=mailto:[email protected]"
#
host -t TXT _dmarc.yahoo.com
_dmarc.yahoo.com descriptive text "v=DMARC1; p=reject; pct=100; rua=mailto:[email protected]; ruf=mailto:[email protected];"
reject
semua surel yang berpura-pura dikirim dari akun Yahoo tetapi kekurangan atau gagal pemeriksaan DKIM dan SPF. Google Mail (Gmail) menyebarkan kebijakan yang sangat santai, di mana pesan tersebut dari domain utama masih harus diterima (p=none
). Untuk subdomain, mereka harus ditandai sebagai spam (sp=quarantine
). Alamat yang diberikan dalam kunci rua
dapat digunakan untuk mengirim laporan DMARC gabungan. Sintaks lengkap dijelaskan di sini:
postfix
dapat menggunakan informasi ini juga. Paket opendmarc berisi milter yang diperlukan. Mirip dengan opendkim SOCKET
dan RUNDIR
harus dipilih di /etc/default/opendmarc
(untuk soket Unix Anda harus memastikan bahwa mereka berada di dalam chroot postfix untuk ditemukan). Berkas konfigurasi /etc/opendmarc.conf
berisi komentar rinci dan juga dijelaskan di opendmarc.conf(5). Secara default, surel yang gagal dalam validasi DMARC tidak ditolak tetapi ditandai, dengan menambahkan kolom header yang sesuai. Untuk mengubahnya, gunakan RejectFailures true
.
smtpd_milters
dan non_smtpd_milters
. Jika kita mengkonfigurasi milter opendkim dan opendmarc untuk berjalan pada port 12345 dan 54321, entri di /etc/postfix/main.cf
terlihat seperti ini:
non_smtpd_milters = inet:localhost:12345,inet:localhost:54321 smtpd_milters = inet:localhost:12345,inet:localhost:54321
/etc/postfix/master.cf
sebagai pengganti.
saslpasswd2
, yang memerlukan beberapa parameter. Opsi -U
mendefinisikan domain otentikasi, yang harus cocok dengan parameter smtpd_sasl_local_domain
dalam konfigurasi Postfix. Opsi -C
memungkinkan membuat pengguna, dan -f
menetapkan berkas yang akan dipakai jika basis data SASL perlu disimpan di lokasi yang berbeda dari default (/etc/sasldb2
).
#
saslpasswd2 -u `postconf -h myhostname` -f /var/spool/postfix/etc/sasldb2 -c jean
[... ketikkan kata sandi jean dua kali ...]
/etc/sasldb2
menjadi link simbolik menunjuk pada basis data yang digunakan oleh Postfix, dengan perintah ln -sf /var/spool/postfix/etc/sasldb2 /etc/sasldb2
.
postfix
perlu ditambahkan ke grup sasl
, sehingga dapat mengakses basis data akun SASL. Beberapa parameter baru juga diperlukan untuk mengaktifkan SASL, dan parameter smtpd_recipient_restrictions
perlu dikonfigurasi untuk memungkinkan kilen terotentikasi-SASL untuk mengirim surel dengan bebas.
Contoh 11.12. Memfungsikan SASL di /etc/postfix/main.cf
# Memfungsikan otentikasi SASL smtpd_sasl_auth_enable = yes # Define the SASL authentication domain to use smtpd_sasl_local_domain = $myhostname [...] # Menambahkan permit_sasl_authenticated before reject_unauth_destination # mengizinkan merelay surel yang dikirim oleh pengguna SASL-authenticated smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, [...]
/etc/postfix/master.cf
. Untuk mematikan otentikasi sama sekali untuk port 25 (layanan smtpd
) tambahkan direktif berikut:
smtp inet n - y - - smtpd [..] -o smtpd_sasl_auth_enable=no [..]
AUTH
yang sudah kedaluwarsa (beberapa klien surel yang sangat lama menggunakannya), interoperabilitas dengan mereka dapat diaktifkan menggunakan direktif broken_sasl_auth_clients
.