.png)
Estou tentando configurar um servidor de email postfix de tráfego muito baixo usando:
- Um filtro de conteúdo simples (http://www.postfix.org/FILTER_README.html#simple_filter). É bem mais simples que o avançado e o tráfego é baixo.
- pombal como agente de entrega. (Por causa das cotas do maildir e dos filtros de peneira)
always_bcc
para manter cópias de todos os e-mails enviados. (Regras de negócios)
Minhas configurações relevantes são:
mestre.cf
smtp inet n - y - - smtpd
-o content_filter=filter:dummy
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
relay unix - - y - - smtp
-o syslog_name=postfix/$service_name
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
postlog unix-dgram n - n - 1 postlogd
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
filter unix - n n - 10 pipe
flags=Rq user=filter null_sender=
argv=/var/spool/filter/scripts/filter.sh -f ${sender} -- ${recipient}
dovecot unix - n n - - pipe
flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
main.cf (apenas partes relevantes)
always_bcc = [email protected]
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
/var/spool/filter/scripts/filter.sh
#!/bin/sh
/usr/bin/cat | /var/spool/filter/scripts/mailfilter | /usr/sbin/sendmail -G -i "$@"
exit $?
- Todos os meus usuários têm e-mails em "(Inicial)[e-mail protegido]"formato
- Existem grupos de segurança que atuam como funções e cada um possui emails em "[e-mail protegido]"formato.
- Basicamente, um e-mail de função funciona como um alias para vários usuários.
Assim, posso reutilizar as mesmas funções/grupos que uso para definir permissões, e não usar os usuários diretamente.
Por exemplo
- meu e-mail de usuário é[e-mail protegido]
- Sou membro da função ITDepartment ([e-mail protegido])
- Sou membro de algumas outras funções, mas minha função principal é "Departamento de TI"
- Por ser membro deste grupo/função, tenho certos privilégios, pois os outros membros e todos os e-mails enviados para[e-mail protegido]chegará a mim e aos outros membros.
Até agora, tudo bem... Mas meu chefe quer que todos os e-mails que eu envio usem o[e-mail protegido]endereço (função) em vez de[e-mail protegido](do utilizador). ou seja, que cada e-mail enviado use o e-mail da função principal, não o e-mail do usuário.
/var/spool/filter/scripts/mailfilter
é um filtro interno que apenas faz isso (altera os endereços "de" de "(Inicial).sobrenome@" para "role@" verificando um servidor LDAP).
Ele nunca falha (em caso de qualquer condição de erro, ele apenas copia a entrada padrão na saída padrão e nenhuma modificação é feita, portanto, nenhuma alteração de endereço, mas o e-mail não é perdido).
O problema é que quando envio um e-mail ele entrega duas cópias para[e-mail protegido]conforme visto nos logs, nem uma cópia conforme o esperado.
Dec 16 16:23:08 correo2 postfix/smtpd[32453]: connect from informatica1.mydomain.example[10.128.159.15]
Dec 16 16:23:08 correo2 postfix/smtpd[32453]: DD925380C87: client=informatica1.mydomain.example[10.128.159.15], sasl_method=LOGIN, [email protected]
Dec 16 16:23:08 correo2 postfix/cleanup[32456]: DD925380C87: message-id=<[email protected]>
Dec 16 16:23:09 correo2 postfix/qmgr[32275]: DD925380C87: from=<[email protected]>, size=2749, nrcpt=2 (queue active)
Dec 16 16:23:09 correo2 postfix/pickup[32274]: AAFEF380C8D: uid=110 from=<[email protected]>
Dec 16 16:23:09 correo2 postfix/pipe[32457]: DD925380C87: to=<[email protected]>, relay=filter, delay=0.81, delays=0.11/0/0/0.7, dsn=2.0.0, status=sent (delivered via filter service)
Dec 16 16:23:09 correo2 postfix/pipe[32457]: DD925380C87: to=<[email protected]>, orig_to=<[email protected]>, relay=filter, delay=0.81, delays=0.11/0/0/0.7, dsn=2.0.0, status=sent (delivered via filter service)
Dec 16 16:23:09 correo2 postfix/qmgr[32275]: DD925380C87: removed
Dec 16 16:23:09 correo2 postfix/cleanup[32456]: AAFEF380C8D: message-id=<[email protected]>
Dec 16 16:23:09 correo2 postfix/qmgr[32275]: AAFEF380C8D: from=<[email protected]>, size=2927, nrcpt=3 (queue active)
Dec 16 16:23:10 correo2 dovecot: lda([email protected])<32488><2DSfML3hnGPofgAA0V72BQ>: msgid=<[email protected]>: saved mail to INBOX
Dec 16 16:23:10 correo2 postfix/pipe[32473]: AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.28, dsn=2.0.0, status=sent (delivered via dovecot service)
Dec 16 16:23:10 correo2 dovecot: lda([email protected])<32490><Au2fML3hnGPqfgAA0V72BQ>: msgid=<[email protected]>: saved mail to INBOX
Dec 16 16:23:10 correo2 postfix/pipe[32471]: AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.34, dsn=2.0.0, status=sent (delivered via dovecot service)
Dec 16 16:23:10 correo2 dovecot: lda([email protected])<32489><BE2gML3hnGPpfgAA0V72BQ>: msgid=<[email protected]>: saved mail to INBOX
Dec 16 16:23:10 correo2 postfix/pipe[32470]: AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.35, dsn=2.0.0, status=sent (delivered via dovecot service)
Dec 16 16:23:10 correo2 postfix/qmgr[32275]: AAFEF380C8D: removed
Dec 16 16:23:11 correo2 postfix/smtpd[32453]: disconnect from informatica1.mydomain.example[10.128.159.15] ehlo=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=6
uid=110 é o uid do usuário "filtro". "De" só é alterado nos cabeçalhos, dentro do email, por isso não aparece nos logs.
Tudo está funcionando como deveria, exceto esse detalhe de entrega dupla. Não tentei, mas tenho certeza que se eu retirar o pombal da equação, tudo funcionará. Mas perco as regras da peneira e as cotas do maildir. Então...
Alguma ideia de como posso consertar isso?
Responder1
dr: O e-mail original chega ao Postfix que adiciona Always_BCC e envia a cópia, descarta o e-mail conforme filtro. Seu filtro envia uma nova mensagem para o Postfix que adiciona Always_BCC e envia a cópia, depois entrega o email.
Leia os três últimos parágrafos.
O primeiro e-mail que chegar ao Postfix será o originalDD925380C87, então ele envia uma cópia diretamente para seccopies
conformesempre_co_coregra. O segundoAAFEF380C8Dé aquele traduzido pelo filtro (mudando o cabeçalho From para o seu grupo) e é enviado para seccopies
também, mas duas vezes, porque o primeiro e-mail já tinha o BCC de seccopies
, e agora o Postfix acha que precisa enviar para ele para o BCC e seccopies
assim ele consegue de novo.
Então você deveria receber três cópias para seccopies
, mas2e [3] são identificados como o mesmo e-mail (AAFEF380C8D):
- o primeiro de
y.hernandez
atéy.hernandez
>> sempre_bccseccopies
- o segundo de
informatics
para paray.hernandez
>> sempre_bccseccopies
- o terceiro de
informatics
paraseccopies
>> sempre_bccseccopies
(como um BCC de2)
A cópia única do original é entregue a seccopies
:
**DD925380C87**: to=<[email protected]>, relay=filter, delay=0.81, delays=0.11/0/0/0.7, dsn=2.0.0, status=sent (delivered via filter service)
A linha com uid=110
é onde2é criado, e as duas entregas, uma porque é TO y.hernandez
e outra porque é BCCd to, seccopies
estão nestas linhas:
AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.34, dsn=2.0.0, status=sent (delivered via dovecot service)
AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.28, dsn=2.0.0, status=sent (delivered via dovecot service)
E finalmente, o email modificado é entregue ao destinatário pretendido:
AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.35, dsn=2.0.0, status=sent (delivered via dovecot service)
A desduplicação impediria os doisAAFEF380C8De-mails sejam entregues para seccopies
, mas não acho que isso impediria oDD925380C87email, porque esse é um email separado.
Eu acho que você precisa seguiresseinstrução, para queo filtro de conteúdo vê os endereços de e-mail originais em vez do resultado de ... Cco automático, ele reinjetará o e-mail no Postfix, que aplicará o Always_BCC:
/etc/postfix/main.cf:
content_filter = scan:localhost:10025
receive_override_options = no_address_mappings
Dereceber_override_options: quando a configuração "BEFORE content filter" recebe_override_options é especificada no arquivo main.cf, especifique a configuração "AFTER content filter" recebe_override_options em master.cf (e vice-versa).