Como eu posso “filtrar” mensagens de rejeição geradas pelo postfix?

6

Estamos usando o postfix 2.7 e o SMTPD personalizado (com base no qpsmtpd) em uma configuração altamente personalizada para filtragem de spam. Temos um novo requisito para filtrar retornos gerados pelo postfix através de nosso processo qpsmtpd personalizado (não tanto para filtragem de conteúdo, mas para processar esses retornos de acordo).

Nossa configuração atual parece (em parte) assim:

main.cf (somente personalizações mostradas):

2526      inet  n       -       -       -       0       cleanup
pickup    fifo  n       -       -       60      1       pickup
  -o content_filter=smtp:127.0.0.2

Nosso smtpd injeta mensagens para o postfix na porta 2526, falando diretamente com o daemon de limpeza. E o comando custom pickup instrui o postfix a entregar todos os e-mails gerados localmente (do cron, nagios ou outros scripts personalizados) ao nosso smtpd personalizado.

O problema é que essa configuração não afeta as mensagens de devolução geradas pelo postfix, pois elas não passam pelo daemon de coleta.

Eu tentei adicionar a mesma opção content_filter aos comandos do tipo bounce daemon, mas não parece ter nenhum efeito:

bounce    unix  -       -       -       -       0       bounce
-o content_filter=smtp:127.0.0.2
defer     unix  -       -       -       -       0       bounce
-o content_filter=smtp:127.0.0.2
trace     unix  -       -       -       -       0       bounce
-o content_filter=smtp:127.0.0.2

Para referência, aqui está o meu arquivo main.cf , também:

biff = no
# TLS parameters
smtpd_tls_loglevel = 0
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtp_tls_security_level = may

mydestination = $myhostname
alias_maps = proxy:pgsql:/etc/postfix/dc-aliases.cf
transport_maps = proxy:pgsql:/etc/postfix/dc-transport.cf

# This is enforced on incoming mail by QPSMTPD, so this is simply
# the upper possible bound (also enforced in defaults.pl)
message_size_limit = 262144000
mailbox_size_limit = 0

# We do our own message expiration, but if we set this to 0, then postfix
# will try each mail delivery only once, so instead we set it to 100 days
# (which is the max postfix seems to support)
maximal_queue_lifetime = 100d

hash_queue_depth = 1
hash_queue_names = deferred, defer, hold

Eu também tentei adicionar a opção internal_mail_filter_classes para main.cf, mas também para afetar:

internal_mail_filter_classes = bounce,notify

Estou aberto a qualquer sugestão, incluindo a manipulação do nosso atual filtro de filtragem de conteúdo de uma maneira diferente.

Se não está claro o que estou perguntando, por favor me avise, e posso tentar esclarecer.

    
por Flimzy 08.09.2011 / 02:39

1 resposta

3

Neste caso, você faz isso muito complicado. Este é o caminho mais fácil.

Você precisa ter isso (adicional) no seu main.cf :

notify_classes = resource, software, bounce, 2bounce
bounce_notice_recipient = [email protected]
2bounce_notice_recipient = [email protected]
transport_maps = hash:/etc/postfix/transport_maps   #or another file. See below.

no /etc/postfix/transport_maps put

[email protected]    smtp:127.0.0.2:25

depois, postmap /etc/postfix/transport_maps . Depois postfix reload ou reinicie o Postfix.

Isso notificará o usuário [email protected] de todos os retornos e, como esse usuário é transportado através de 127.0.0.2:25, você recebe todos esses e-mails através desse servidor. Substitua os endereços / IP / porta de acordo com o seu ambiente.

    
por 08.09.2011 / 19:50

Tags