Postfix - Canaliza várias mensagens de destinatários como uma única mensagem

6

Estou tentando enviar e-mails por meio do Postfix para um script Python que tenho. Atualmente, as mensagens com vários destinatários são canalizadas para o script uma vez para cada destinatário. Gostaria que essas mensagens fossem canalizadas para o script apenas uma vez, independentemente do número de destinatários.

No /etc/postfix/main.cf eu tenho:

default_transport = customsmtp

E esse método de transporte é definido em /etc/postfix/master.cf como:

customsmtp  unix  -      n      n     -     -     pipe
    flags=FR  user=cody argv=/var/relay/custom-relay/endpoint.py type:relay env:production sender:${sender} recipient:${recipient}

Aqui está um trecho dos logs de e-mail do Postfix mostrando as várias entregas para o script:

Mar 19 20:26:29 ip-172-31-2-6 postfix/cleanup[18639]: 2ACDD24199: message-id=<[email protected]>
Mar 19 20:26:29 ip-172-31-2-6 postfix/qmgr[29229]: 2ACDD24199: from=<[email protected]>, size=2715, nrcpt=2 (queue active)
Mar 19 20:26:30 ip-172-31-2-6 postfix/pipe[18640]: 2ACDD24199: to=<[email protected]>, relay=customsmtp, delay=0.89, delays=0.2/0.01/0/0.67, dsn=2.0.0, status=sent (delivered via customsmtp service)
Mar 19 20:26:30 ip-172-31-2-6 postfix/pipe[18641]: 2ACDD24199: to=<[email protected]>, relay=customsmtp, delay=0.9, delays=0.2/0.04/0/0.66, dsn=2.0.0, status=sent (delivered via customsmtp service)
Mar 19 20:26:30 ip-172-31-2-6 postfix/qmgr[29229]: 2ACDD24199: removed

Como alguém relativamente novo no Postfix, não sei quais outras configurações precisam ser configuradas para permitir que isso aconteça. Que outras configurações devo modificar ou se há mais informações que posso fornecer para obter ajuda com esse problema?

EDITAR

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
default_transport = customsmtp
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = cody.example.com
myhostname = cody.example.com
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_helo_required = yes
smtpd_helo_restrictions = reject_invalid_helo_hostname
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
smtpd_tls_CAfile = /etc/path/to/crt.crt
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/path/to/crt2.crt
smtpd_tls_key_file = /etc/path/to/key.key
smtpd_tls_loglevel = 1
smtpd_tls_security_level = encrypt
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 550
    
por ctp_9 19.03.2015 / 21:52

3 respostas

2

Adicione esses parâmetros em main.cf

virtual_alias_maps = pcre:/etc/postfix/deduplicate
enable_original_recipient = no

Em seguida, no arquivo deduplicate , coloque

/.*/   [email protected]

Não se esqueça de executar postfix reload

Explicação:

O parâmetro enable_original_recipient impedirá a duplicação quando o aliasing for dummy @ gmail.com. Após o aliasing, o postfix enviará o email para customsmtp

Advertência:

O destinatário do parâmetro no seu script será substituído por [email protected]. Então você perderá os destinatários originais

    
por 21.03.2015 / 09:16
2

A seguinte configuração parece funcionar para o seu objetivo:

main.cf: (padrão no Ubuntu, exceto mydestination , default_transport e local_transport )

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

readme_directory = no

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = vagrant-ubuntu-trusty-64
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = vagrant-ubuntu-trusty-64, localhost.localdomain, , localhost, example.org
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
default_transport=test
local_transport=test

master.cf:

test    unix  -    n    n    -    -   pipe
    user=nobody argv=/usr/local/bin/test ${sender} ${recipient}

/ usr / local / bin / test:

#!/bin/sh
logfile="/tmp/postfix_transport.log"
content='cat'
date -R >> "$logfile"
echo "$@" >> "$logfile"


O envio de um email usando sendmail -f [email protected] [email protected] [email protected] < mail gera a seguinte mensagem em /tmp/postfix_transport.log :

Sun, 03 May 2015 19:19:47 +0000
[email protected] [email protected] [email protected]
    
por 03.05.2015 / 21:25
-2

link pode ser uma solução para sua pergunta

    
por 12.11.2015 / 14:57

Tags