Colas intermedias en postfix

0

Estoy tratando de implementar un servidor de correo con búsquedas de postfix + policyd / amavis + mysql white / blacklist.

El problema es que me gustaría tener una cola "intermedia" entre ellos en caso de que uno de ellos falle, el correo electrónico no será rechazado y permanecerá en la cola hasta que se recupere el punto de falla.

Mi idea es la siguiente:

postfix (25) -> queue -> mysql white / blacklist lookups (RBL) -> queue -> policyd (10031) / amavis (10014) -> queue -> dspam (sock) -> postfix (10025) / relay

Con esta idea, si falla uno de los puntos "intermedios", no perderé ningún correo electrónico y todos permanecerán en las colas.

Mi configuración es: main.cf

...
transport_maps = ldap:/etc/postfix/perditionMailhost_ldap
content_filter = amavisd-new:[127.0.0.1]:10024
...
smtpd_recipient_restrictions =
 reject_invalid_hostname,
 check_client_access mysql:/etc/postfix/client_whitelist
 check_sender_access mysql:/etc/postfix/sender_whitelist
 check_recipient_access mysql:/etc/postfix/recipient_whitelist
 reject_rbl_client multi.uribl.com,
 reject_rbl_client dsn.rfc-ignorant.org,
 reject_rbl_client dul.dnsbl.sorbs.net,
 reject_rbl_client list.dsbl.org,
 reject_rbl_client sbl-xbl.spamhaus.org,
 reject_rbl_client bl.spamcop.net,
 reject_rbl_client dnsbl.sorbs.net,
 reject_rbl_client cbl.abuseat.org,
 reject_rbl_client ix.dnsbl.manitu.net,
 reject_rbl_client combined.rbl.msrbl.net,
 reject_rbl_client rabl.nuclearelephant.com,
 check_policy_service inet:127.0.0.1:10031,
 permit_mynetworks,
 reject
smtpd_end_of_data_restrictions =
 check_policy_service inet:127.0.0.1:10031
smtpd_helo_required = yes
disable_vrfy_command = yes
invalid_hostname_reject_code = 554
non_fqdn_reject_code = 554
...

master.cf

smtp      inet  n       -       n       -       200       smtpd -v
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
amavisd-new unix      -      -             n      -    2       smtp
        -o smtp_data_done_timeout=1200s
        -o disable_dns_lookups=yes
relay     unix  -       -       n       -       -       smtp
        -o smtp_fallback_relay=
        -o disable_dns_lookups=yes
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
127.0.0.1:10025 inet     n       -       n       -       -       smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes

¿Alguna ayuda para hacerlo? incluso, no estoy seguro de si es posible.

Gracias y Saludos.

magiza83
fuente

Respuestas:

1

Necesita una instancia adicional de smtp postfix, que escucha diferentes puertos para la cola intermedia.

El procesamiento debería ser así:

  1. smtp en el puerto 25 recibe correo electrónico entrante.
  2. mensaje de correo electrónico reenviado a amavisd, seleccionado por la directiva content_filter en su main.cf
  3. amavisd inyecta correo electrónico a un nuevo proceso smtp intermedio, escuchando en algún puerto, por ejemplo, 11025. Debe configurar esto en la configuración amavisd: $forward_method = 'smtp:[127.0.0.1]:1025'; smtp intermedio debe tener la directiva content_filer, apuntando a dspam,

    127.0.0.1:11025      inet  n       -       n       -       -       smtpd
          -o content_filter=dspam:
    
  4. Debe haber un proceso de canalización, recibir correos electrónicos de dspam.
  5. dspam tiene un correo electrónico entregado al último smtp en el puerto 10025, con la configuración que ya tiene.
DukeLion
fuente
Ok, tengo que crear una instancia de postfix adicional para cualquier cola intermedia, pero ¿qué pasa con tener una cola "inicial" si mysql está inactivo? ¿Hay alguna forma de hacerlo?
magiza83
Postfix tendrá colas para cada proceso smtpd. La cola inicial será la cola activa de smtpd en el puerto 25
DukeLion
Estoy tratando de configurar instancias adicionales de postfix smtp, pero no puedo hablar. No sé cómo redirigir las conexiones de postfix (25) a postfix (10025)
magiza83