Pegue todos os emails e canalize todos eles para um script com postfix

1

Eu percebo que essa pergunta foi feita e respondida antes. Aqui está o que eu fiz.

Criamos um endereço e um usuário genéricos. Aqui está o meu arquivo /etc/postfix/virtual .

@example.com catchall

Adicionado a main.cf . Aqui está a entrada.

virtual_alias_maps = hash:/etc/postfix/virtual

Isso funcionou e todas as minhas correspondências foram para /var/mail/catchall , o que foi bom. Em seguida, eu queria criar um canal que executasse um programa toda vez que um email fosse recebido. Para conseguir isso eu criei um / etc / postfix / transport

example.com catchall:

Então adicionei isso ao meu arquivo master.cf .

catchall  unix  -       n       n       -       -       pipe
  flags=F user=catchall argv=/tmp/test.sh

test.sh é apenas um script de shell pequeno para que eu possa ver meu código sendo executado.

#!/bin/bash
echo 'whoami' > /tmp/aaa.txt

Por fim, assegurei que o usuário catchall pudesse executar esse script com su -c "/tmp/test.sh " catchall , o que geraria catchall para o esperado aaa.txt.

Então, minha pergunta é: o que dá? o que estou perdendo? Qualquer ajuda? Eu li os documentos, li os tutoriais e não consigo trabalhar. O endereço catchall funciona corretamente, vejo o e-mail sendo recebido em mail.log , mail.err está vazio e executei o postmap em todos os meus arquivos e executei postfix reload após a edição dos arquivos. Mas meu script de shell não será executado ...

postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mailbox_size_limit = 0
mydestination = twinsen.example.com, myhostname, localhost.localdomain, localhost
myhostname = mydomain-guts
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
transport_maps = hash:/etc/postfix/transport
virtual_alias_maps = hash:/etc/postfix/virtual

mail.log

Jan 11 22:18:02 mydomain-guts postfix/smtpd[3835]: connect from mail-we0-f172.google.com[74.125.82.172]
Jan 11 22:18:02 mydomain-guts postfix/smtpd[3835]: 790E01400D4: client=mail-we0-f172.google.com[74.125.82.172]
Jan 11 22:18:02 mydomain-guts postfix/cleanup[3834]: 790E01400D4: message-id=<CA+wDdVbiDS=Kpa7nMA4-y5GCMgo0PcsK4G5Kb_uE_xKHBYY+vQ@mail.gmail.com>
Jan 11 22:18:02 mydomain-guts postfix/qmgr[3829]: 790E01400D4: from=<[email protected]>, size=1828, nrcpt=1 (queue active)
Jan 11 22:18:02 mydomain-guts postfix/smtp[3831]: 790E01400D4: to=<[email protected]>, orig_to=<[email protected]>, relay=none, delay=0.24, delays=0.2/0/0.04/0, dsn=5.4.6, status=bounced (mail for example.com loops back to myself)
Jan 11 22:18:02 mydomain-guts postfix/cleanup[3834]: B3E2F1400D9: message-id=<20150112031802.B3E2F1400D9@mydomain-guts>
Jan 11 22:18:02 mydomain-guts postfix/qmgr[3829]: B3E2F1400D9: from=<>, size=3677, nrcpt=1 (queue active)
Jan 11 22:18:02 mydomain-guts postfix/bounce[3832]: 790E01400D4: sender non-delivery notification: B3E2F1400D9
Jan 11 22:18:02 mydomain-guts postfix/qmgr[3829]: 790E01400D4: removed
Jan 11 22:18:02 mydomain-guts postfix/smtpd[3835]: disconnect from mail-we0-f172.google.com[74.125.82.172]
Jan 11 22:18:03 mydomain-guts postfix/smtp[3831]: B3E2F1400D9: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[64.233.171.26]:25, delay=0.85, delays=0.01/0/0.28/0.56, dsn=2.0.0, status=sent (250 2.0.0 OK 1421032683 p20si20890136qgd.117 - gsmtp)
Jan 11 22:18:03 mydomain-guts postfix/qmgr[3829]: B3E2F1400D9: removed
    
por Rell3oT 12.01.2015 / 04:02

2 respostas

1

Por mais frustante que seja. Eu percebi felizmente e cuidadosamente examinar mail.log é o que ajudou.

O que eu tive que fazer.

em main.cf alterei a primeira entrada na diretiva mydestination para mydomain.com . Eu tinha brincado com depois de perguntar e antes de obter um elogio pedindo o arquivo main.cf e notei que eu estava obtendo resultados diferentes em mail.log

Finalmente, mudei

/etc/mailname contém twinsen.mydomain.com .

O problema é que o e-mail estava sendo rejeitado pelo meu servidor por causa da incompatibilidade do nome do subdomínio.

    
por 12.01.2015 / 04:42
0

Ainda recebi erros.

postfix/trivial-rewrite[4745]: warning: hash:/etc/postfix/transport lookup error for "*"

Eles foram corrigidos após a execução:

postmap /etc/postfix/transport
    
por 21.01.2016 / 16:27