Cómo reinyectar correo escaneado en la cola usando sendmail

Cómo reinyectar correo escaneado en la cola usando sendmail

Me gustaría pasar el correo entrante usando virtual_transportun transporte spamassassin(main.cf:) virtual_transport=spamassassiny luego reinyectar el correo escaneado en postfix usando sendmail.

El transporte se ve así:

spamassassin unix   -    n     n   -   -    pipe
    flags=hu user=vmail:mail argv=/usr/bin/spamc -u ${recipient} -e /usr/sbin/sendmail -f ${sender} ${recipient}

Esto debería ser posible según eldocumentación postfix:

Los sitios de gran volumen deben evitar el uso de filtros de contenido "simples" que reinyectan el correo escaneado a través de Postfix sendmail(1) y postdrop(1).

Con mi llamada actual a sendmail /usr/sbin/sendmail -f ${sender} ${recipient}, el correo vuelve a pasar a la cola y luego regresa a spamassassin y así sucesivamente.

Según tengo entendido de la documentación de Postfix, el correo entregado usando Postfix sendmailse coloca en el maildropdirectorio y luego se recoge usando pickup. Intenté agregar un -o virtual_transport=dovecotal transporte de recogida para evitar la cola, pero esto no ayudó. (Supongo que esas opciones solo se pueden agregar a los transportes smtp).

¿Cómo puedo reinyectar el correo escaneado con spamassassin en la cola para su entrega final sin provocar un bucle?

Respuesta1

¿Cómo puedo reinyectar el correo escaneado con spamassassin en la cola para su entrega final sin provocar un bucle?

NO, no puedes

Explicación

Entiendo la razón por la que virtual_transportcanalizas el correo electrónico a Spam Assassin. Sólo desea escanear el correo electrónico destinado a su virtual_mailbox_domain. Lamentablemente no sigue lasrecomendado configuración para filtro de contenido simpleque usar content_filterel parámetro en su lugar virtual_transport.

¿Por qué no puedo pasar virtual_transporta pickup o smtpd?

En general, aquí se muestra el recorrido del correo electrónico a través del código Postfix.

Input  --> cleanup --> qmgr --> Output 
*smtpd                          *local     
*pickup                         *virtual
*qmqpd                          *smtp
                                *lmtp
                                *pipe

En cleanupdaemon, postfix 'enrutará' su correo electrónico, ya sea que pertenezca a transporte virtual, local, smtp u otros. Una excepción es cuando content_filterse pasa un parámetro que no está en blanco al servicio de entrada ( ,, smtpd) . Cuando esto suceda, postfix anulará la ruta del mensaje y enviará el correo electrónico a su lugar.pickupqmqpdcontent_filter

Otra nota, de forma predeterminada, todos los servicios postfix obtenían el valor del parámetro main.cfa menos que lo anule usando-o parámetro=valor en master.cf. Pero no todos los parámetros son man 5 postconfutilizados por un servicio. Por ejemplo,Filtro de contenidosolo usado por pickup, smtpdpor qmqpdlo que puedes poner-o content_filter=amavis:[127.0.0.1:10025en ellos. Otro ejemplo, no es sensato poner-o dirección_smtp_bindya smtpdque este parámetro solo se usa en smtpservicio.

El mismo argumento se puede aplicar a su pregunta: "¿Por qué puedo aprobar-o transporte_virtualen pickup?"

Aquí están las diversas alternativas para su configuración.

  • Úselo content_filtercomo se explica en la documentación de postfix. La desventaja es que también escanea el correo electrónico que se retransmitió fuera de su dominio.

  • Usarcontent_filter a través de la tabla ACCESS y la acción FILTER. De esta manera, puede escanear selectivamente el correo electrónico entrante. Desafortunadamente debes virtual domainvolver a inscribirte en esa tabla. . Puedes evitarlo colocando con cuidado la tabla ACCESS después de permit_mynetworks, permit_sasl_authenticated. De esta manera, el correo electrónico saliente ya estará permitido y solo escaneará el correo electrónico entrante. (Crédito al comentario de OP:) )

  • UsandoInstancia múltiple de Postfix. De esta manera, puede conservar el virtual_transportparámetro y spamc inyectará el correo electrónico en su segunda instancia. Y luego puedes definir diferentes virtual_transporten diferentes instancias. Pero es un poco excesivo si desea mantener la configuración simple.

información relacionada