Всем привет.Пробую настроить PMTA чтобы не слать письма на домены из блэклиста. Сделал rollup который подключаю в основном конфиге badmailservice.rollup
mx-rollup-list.txt
Основной конфиг pmta
Я так понимаю наличие попыток отправки на hkatenhusen@hako.com в очереди q158.badmailservice.rollup/**********.com-vmta с статусом 4.4.1 (no answer from host)
Говорит о том что все таки пытался отправить на этот домен, хотя он в badmailservice.rollup
Хотя по задумке все хосты с MX из блэк листа на них ненужно пробовать отправить а сбрасывать всю очередь в идеале в bounce.Было бы крутов отдельный баунс, типо black_domain_bounce.csv
Так же с удовольствием выслушаю комменты по конфигу, цель конфига-провалидировать большую базу на просто валидные мыла.
mx-rollup-list.txt
Code:
<mx-rollup-list>
# Existing Rollups
mx "*.protection.outlook.com" office365.rollup rollup-by-ip
mx "*.l.google.com" google.rollup rollup-by-ip
#################### BAD MAILSERVICE ####################
mx "*.spamexperts.com" badmailservice.rollup rollup-by-ip
mx "*.hornetsecurity.com" badmailservice.rollup rollup-by-ip
mx "*.sophos.com" badmailservice.rollup rollup-by-ip
mx "*.jellyfish.systems" badmailservice.rollup rollup-by-ip
mx "*.spamtitan.com" badmailservice.rollup rollup-by-ip
mx "*.email-protect.gosecure.net" badmailservice.rollup rollup-by-ip
mx "*.emailsecurity.app" badmailservice.rollup rollup-by-ip
mx "*.mailspamprotection.com" badmailservice.rollup rollup-by-ip
mx "*.us.email.fireeyecloud.com" badmailservice.rollup rollup-by-ip
mx "*.cloud.vadesecure.com" badmailservice.rollup rollup-by-ip
mx "*.messagelabs.com" badmailservice.rollup rollup-by-ip
mx "*.mimecast.com" badmailservice.rollup rollup-by-ip
#################### OTHER MAILSERVICE ####################
mx "*.ppe-hosted.com" othermailservice.rollup rollup-by-ip
mx "*.ionos.com" othermailservice.rollup rollup-by-ip
mx "*.qq.com" othermailservice.rollup rollup-by-ip
mx "*.mailchannels.net" othermailservice.rollup rollup-by-ip
mx "*.mxrecord.io" othermailservice.rollup rollup-by-ip
mx "*.1and1.com" othermailservice.rollup rollup-by-ip
mx "*.mailgun.org" othermailservice.rollup rollup-by-ip
mx "*.cloudflare.net" othermailservice.rollup rollup-by-ip
mx "*.hostinger.com" othermailservice.rollup rollup-by-ip
mx "*.mxhichina.com" othermailservice.rollup rollup-by-ip
mx "*.above.com" othermailservice.rollup rollup-by-ip
</mx-rollup-list>
Основной конфиг pmta
Code:
#####################################################################################################################################
# DEFAULT SETTINGS
#####################################################################################################################################
total-max-smtp-in 1000
total-max-smtp-out 5000
<source 127.0.0.1>
always-allow-relaying yes # allow feeding from 127.0.0.1
process-x-virtual-mta yes # allow selection of a virtual MTA
max-message-size 0
smtp-service yes # allow SMTP service
remove-received-headers true
add-received-header false
hide-message-source true
remove-header X-Priority
</source>
#####################################################################################################################################
# MAIN SETTINGS / VIRTUAL-MTA-POOL
#####################################################################################################################################
smtp-listener 0/0:2525 # Port PMTA
http-mgmt-port 10444
http-access 127.0.0.1 monitor
http-access ::1 monitor
http-access 127.0.0.1 admin
http-redirect-to-https false
run-as-root no
#####################################################################################################################################
# Section 3: BASE SETTINGS FOR LOCALHOST
#####################################################################################################################################
<source 0/0>
log-connections no
log-commands no # WARNING: verbose!
log-data no # WARNING: even more verbose!
allow-unencrypted-plain-auth yes
default-virtual-mta by-smtp-source-ip
process-x-virtual-mta yes
smtp-service yes
always-allow-api-submission yes
pattern-list pmta-pattern
</source>
include /etc/pmta/virtualhost.txt
#####################################################################################################################################
# DEFAULT SETTINGS END
#####################################################################################################################################
# Section : BOUNCE SETTINGS
#####################################################################################################################################
<smtp-pattern-list my-errors>
include /etc/pmta/my_error_pattern.txt
</smtp-pattern-list>
<smtp-pattern-list defaultPatterns>
include /etc/pmta/defaultPatterns.txt
</smtp-pattern-list>
########################## BLOCK BAD MAILSERVICE ##########################
include /etc/pmta/mx-rollup-list.txt
<domain badmailservice.rollup>
max-msg-rate 0/m # запретить отправку
type discard
discard-as-bounce true
bounce-after 5s
</domain>
########################## BLOCK BAD MAILSERVICE END ##########################
<domain *>
use-starttls no
max-smtp-out 50 # default be nice on concurrent connections
max-msg-per-connection 5 # max 500 mails in one session
max-rcpt-per-message 1
max-errors-per-connection 10 # avoid 'too long without data command' error
reuse-ssl-session no
max-msg-rate 50/m
assume-delivery-upon-data-termination-timeout yes # avoid duplicate deliveries
smtp-421-means-mx-unavailable yes
smtp-553-means-invalid-mailbox yes
connect-timeout 5m
smtp-greeting-timeout 5m
data-send-timeout 5m
retry-after 15m # typical greylisting period
# BOUNCE LIST
smtp-pattern-list my-errors
smtp-pattern-list defaultPatterns
backoff-max-msg-rate 1/h # send only regular tries during backoff (default unlimited)
backoff-retry-after 15m,1h # retry at least every 20m (default 1h)
backoff-to-normal-after-delivery yes # revert to normal asap (default no)
backoff-to-normal-after 1h # always revert to normal after 1h (default never)
bounce-upon-no-mx yes # proper mail domains should have mx
bounce-upon-5xx-greeting true
bounce-after 2h
dkim-sign yes
deliver-local-dsn no
</domain>
<domain office365.rollup>
use-starttls no # Office365 рекомендует STARTTLS
max-smtp-out 10 # Разрешить больше одновременных соединений
max-msg-per-connection 5 # Снизить для улучшения доставки
max-rcpt-per-message 1 # Один получатель на сообщение, что оптимально для Office365
max-errors-per-connection 10 # Оставить как есть, баланс между ошибками и производительностью
reuse-ssl-session no # Лучше отключить, чтобы избегать проблем с SSL
max-msg-rate 10/m # Увеличить до 5 сообщений в минуту
# BOUNCE LIST
smtp-pattern-list my-errors
smtp-pattern-list defaultPatterns
bounce-upon-no-mx yes # Office365 требует MX-записи
assume-delivery-upon-data-termination-timeout yes # Избегать повторной доставки при таймауте
smtp-421-means-mx-unavailable yes # Обработка ошибок 421 как временных проблем с MX
smtp-553-means-invalid-mailbox yes # Bounce для недействительных почтовых ящиков
bounce-upon-5xx-greeting true # Немедленный bounce для ошибок 5xx на приветствии
connect-timeout 5m # Office365 быстро разрывает соединения
smtp-greeting-timeout 5m # Office365 требует быстрой реакции
data-send-timeout 5m # Стандартное время для отправки данных
retry-after 15m # Рекомендуется уменьшить время до повторной попытки
bounce-after 2h # Уменьшить до 2 дней, чтобы ускорить обработку
backoff-max-msg-rate 1/h # Замедлить доставку в режиме backoff
backoff-retry-after 30m,1h # Частое повторение для ускоренной доставки
backoff-to-normal-after-delivery yes # Возврат к normal после успешной доставки
backoff-to-normal-after 30m # Быстрый возврат к normal
dkim-sign yes # Подпись DKIM обязательна
deliver-local-dsn no # Не отправлять уведомления о локальной доставке
</domain>
<domain google.rollup>
use-starttls no
max-smtp-out 10 # default be nice on concurrent connections
max-msg-per-connection 5 # max 500 mails in one session
max-rcpt-per-message 1
max-errors-per-connection 10 # avoid 'too long without data command' error
reuse-ssl-session no
max-msg-rate 10/m
bounce-upon-no-mx yes # proper mail domains should have mx
assume-delivery-upon-data-termination-timeout yes # avoid duplicate deliveries
smtp-421-means-mx-unavailable yes
smtp-553-means-invalid-mailbox yes
bounce-upon-5xx-greeting true
connect-timeout 5m
smtp-greeting-timeout 5m
data-send-timeout 5m
retry-after 15m # typical greylisting period
bounce-after 2h # Уменьшить до 2 дней, чтобы ускорить обработку
backoff-max-msg-rate 1/h # Замедлить доставку в режиме backoff
backoff-retry-after 15m,1h # Частое повторение для ускоренной доставки
backoff-to-normal-after-delivery yes # Возврат к normal после успешной доставки
backoff-to-normal-after 30m # Быстрый возврат к normal
dkim-sign yes # Подпись DKIM обязательна
deliver-local-dsn no # Не отправлять уведомления о локальной доставке
</domain>
<domain othermailservice.rollup>
use-starttls no
max-smtp-out 30
max-msg-per-connection 5
max-rcpt-per-message 1
max-errors-per-connection 10
reuse-ssl-session no
max-msg-rate 10/m
# BOUNCE LIST
smtp-pattern-list my-errors
smtp-pattern-list defaultPatterns
bounce-upon-no-mx yes
assume-delivery-upon-data-termination-timeout yes
smtp-421-means-mx-unavailable yes
smtp-553-means-invalid-mailbox yes
bounce-upon-5xx-greeting true
connect-timeout 5m
smtp-greeting-timeout 5m
data-send-timeout 5m
retry-after 15m
bounce-after 2h # Уменьшить до 2 дней, чтобы ускорить обработку
backoff-max-msg-rate 1/h # Замедлить доставку в режиме backoff
backoff-retry-after 15m,1h # Частое повторение для ускоренной доставки
backoff-to-normal-after-delivery yes # Возврат к normal после успешной доставки
backoff-to-normal-after 30m # Быстрый возврат к normal
dkim-sign yes # Подпись DKIM обязательна
deliver-local-dsn no # Не отправлять уведомления о локальной доставке
</domain>
#####################################################################################################################################
# Section 6: LOG AND SPOOL SETTINGS
#####################################################################################################################################
log-file /var/log/pmta/log # logrotate is used for rotation
# All logs
<acct-file /var/log/pmta/acct.csv>
move-interval 5m # Перемещает файл каждые 5 минут
max-size 50M
delete-after 30d
</acct-file>
# HardBounce logs
<acct-file /var/log/pmta/hardbounces.csv>
records b # Указывает запись только возвратов (bounces)
record-fields b * # Записывает все доступные поля для bounce-записей
move-interval 5m # Перемещает файл каждые 5 минут
max-size 50M # Ограничивает размер файла до 25 МБ
delete-after 30d # Удаляет файлы старше 30 дней
</acct-file>
# SoftBounce logs
<acct-file /var/log/pmta/softbounces.csv>
records t
record-fields t *
move-interval 5m
max-size 50M # MB
delete-after 30d
</acct-file>
# Delivery log
<acct-file /var/log/pmta/success.csv>
records d
record-fields d *
move-interval 5m
max-size 50M # MB
delete-after 30d
</acct-file>
#####################################################################################################################################
# BEGIN: OTHER OPTIONS
#####################################################################################################################################
sync-msg-create false
sync-msg-update false
run-as-root no
#####################################################################################################################################
# SPOOL DIRECTORIES
#####################################################################################################################################
<spool /var/spool/pmta>
deliver-only no
delete-file-holders yes
</spool>
#####################################################################################################################################
# END
#####################################################################################################################################
Я так понимаю наличие попыток отправки на hkatenhusen@hako.com в очереди q158.badmailservice.rollup/**********.com-vmta с статусом 4.4.1 (no answer from host)
Говорит о том что все таки пытался отправить на этот домен, хотя он в badmailservice.rollup
Хотя по задумке все хосты с MX из блэк листа на них ненужно пробовать отправить а сбрасывать всю очередь в идеале в bounce.Было бы крутов отдельный баунс, типо black_domain_bounce.csv
Так же с удовольствием выслушаю комменты по конфигу, цель конфига-провалидировать большую базу на просто валидные мыла.
Code:
➜ ~ dig MX hako.com
; <<>> DiG 9.18.28-0ubuntu0.22.04.1-Ubuntu <<>> MX hako.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59216
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;hako.com. IN MX
;; ANSWER SECTION:
hako.com. 300 IN MX 40 mx04.hornetsecurity.com.
hako.com. 300 IN MX 10 mx01.hornetsecurity.com.
hako.com. 300 IN MX 30 mx03.hornetsecurity.com.
hako.com. 300 IN MX 20 mx02.hornetsecurity.com.
;; Query time: 374 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Fri Dec 13 00:29:24 +07 2024
;; MSG SIZE rcvd: 136