.png)
Estoy intentando configurar un servidor de correo postfix de muy bajo tráfico usando:
- Un filtro de contenido simple (http://www.postfix.org/FILTER_README.html#simple_filter). Es mucho más sencillo que el avanzado y el tráfico es bajo.
- palomar como agente de entrega. (Debido a las cuotas de maildir y los filtros de tamiz)
always_bcc
conservar copias de cada correo enviado. (Reglas comerciales)
Mis configuraciones relevantes son:
maestro.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 (solo 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 mis usuarios tienen correos electrónicos en "(Inicial)[correo electrónico protegido]" formato
- Hay grupos de seguridad que actúan como roles y cada uno tiene correos electrónicos en "[correo electrónico protegido]" formato.
- Básicamente, un correo electrónico de rol funciona como alias para varios usuarios.
Por lo tanto, puedo reutilizar los mismos roles/grupos que uso para establecer permisos y no utilizar a los usuarios directamente.
Por ejemplo
- mi correo electrónico de usuario es[correo electrónico protegido]
- Soy miembro del rol Departamento de TI ([correo electrónico protegido])
- Soy miembro de otras funciones, pero mi función principal es "Departamento de TI".
- Debido a que soy miembro de este grupo/rol, tengo ciertos privilegios, ya que los demás miembros y cada correo enviado a[correo electrónico protegido]llegará a mí y a los demás miembros.
Hasta ahora todo bien... Pero mi jefe quiere que cada correo que envíe utilice el[correo electrónico protegido](rol) dirección en lugar de[correo electrónico protegido](usuario). es decir, que cada correo enviado utilice el correo electrónico de rol principal, no el correo electrónico del usuario.
/var/spool/filter/scripts/mailfilter
es un filtro hecho internamente que simplemente hace eso (cambia las direcciones "de" de "(Inicial).apellido@" a "rol@" verificando un servidor LDAP).
Nunca falla (en caso de cualquier condición de error, simplemente copia la entrada estándar en la salida estándar y no se realiza ninguna modificación, por lo que no se cambia la dirección, pero el correo no se pierde).
El problema es que cuando envío un correo electrónico, entrega dos copias a[correo electrónico protegido]Como se ve en los registros, ni una copia como se esperaba.
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 es el uid de usuario "filtrado". "De" solo se cambia en los encabezados, dentro del correo electrónico, por lo que no aparece en los registros.
Todo funciona como debería excepto este detalle de doble entrega. No lo he intentado, pero estoy seguro de que si elimino dovecot de la ecuación, todo funciona. Pero pierdo las reglas del tamiz y las cuotas de maildir. Entonces...
¿Alguna idea de cómo puedo solucionarlo?
Respuesta1
Tl;dr: El correo electrónico original llega a Postfix, que agrega siempre_bcc y envía la copia, descarta el correo electrónico según el filtro. Su filtro envía un nuevo mensaje a Postfix que agrega siempre_bcc y envía la copia, luego entrega el correo electrónico.
Lea los últimos tres párrafos.
El primer correo electrónico que llegue a Postfix será el original.DD925380C87, por lo que envía una copia de eso directamente a seccopies
segúnsiempre_bccregla. El segundoAAFEF380C8Des el que traduce el filtro (cambiando el encabezado De a su grupo) y seccopies
también se envía a, pero dos veces, porque el primer correo electrónico ya tenía el BCC de seccopies
, y ahora Postfix cree que necesita enviarlo al BCC y seccopies
así lo vuelve a conseguir.
Entonces deberías recibir tres copias seccopies
, pero2y [3] se identifican como el mismo correo electrónico (AAFEF380C8D):
- el primero de
y.hernandez
ay.hernandez
>> siempre_bccseccopies
- el segundo de
informatics
a ay.hernandez
>> siempre_bccseccopies
- el tercero desde
informatics
hastaseccopies
>> siempre_bccseccopies
(como BCC de2)
La copia única del original se entrega 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)
La línea con uid=110
es donde2se crea, y las dos entregas, una porque es TO y.hernandez
y otra porque es BCCd to seccopies
están en estas líneas:
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)
Y finalmente, el correo electrónico modificado se entrega al destinatario previsto:
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)
La deduplicación evitaría que ambosAAFEF380C8Dcorreos electrónicos se entreguen a seccopies
, pero no creo que eso detenga elDD925380C87correo electrónico, porque es un correo electrónico separado.
creo que necesitas seguiresteinstrucción, para queel filtro de contenido ve las direcciones de correo originales en lugar del resultado de... CCO automático, luego reinyectará el correo electrónico en Postfix, que luego aplicará siempre_bcc:
/etc/postfix/main.cf:
content_filter = scan:localhost:10025
receive_override_options = no_address_mappings
Desde elrecibir_opciones_de_anulación: cuando se especifica la configuración de recepción_override_options "ANTES del filtro de contenido" en el archivo main.cf, especifique la configuración de recepción_override_options "DESPUÉS del filtro de contenido" en master.cf (y viceversa).