Reenviar correo a otro SMTP para que lo distribuya él
Hola, tengo un asunto de bastante importancia al que se supone debo dar una
solución en los próximos días. Os cuento el escenario y el problema actual:
Una empresa de tamaño mediano tiene un servidor de correo (CommuniGate) bajo
Linux. A través de ese SMTP envían correos todos los trabajadores de la
empresa, tanto locales como remotos (para tener control y logs de todo el
tráfico del correo en la empresa a nivel mundial).
El problema surge cuando algún usuario debe enviar documentación pesada a
varias direcciones de correo externas. Un ejemplo sería un correo que contiene
un PDF de 4MB a 10 destinatarios. En este caso el correo llegaría al SMTP
(CommuniGate) de la empresa y este enviaría una copia del correo a cada
destinatario, por lo que generaría un tráfico de 40MB hacia Internet.
Al parecer esta práctica suele ser muy habitual y necesaria, pero consume
mucho ancho de banda y satura la red, siendo muy incómodo para los
trabajadores.
Esta empresa tiene contratada la conexión con un ISP que les permitiría usar
su propio SMTP (en el ISP), pero la empresa no quiere por la sencilla razón
de que quieren monitorizar todo el tráfico de su empresa (como es normal).
La solución que debo implementar es la de hacer un filtro en el CommuniGate
para que los correos que pesen más de 500KB los reenvíe tal cual al SMTP del
ISP y sea el ISP quien se encargue de repartir dichos correos a todos sus
destinatarios. Con esto se perdería la capacidad de monitorizar estos
correos, pero para estos casos no importa.
En el ejemplo anterior esta solución supondría que un trabajador envía el PDF
de 4MB a 10 destinatarios, este correo llega al CommuniGate quien al
comprobar que el correo pesa más de 500KB lo que hace es reenviarlo "en
bruto" al SMTP del ISP, por lo que sólo genera un tráfico de 4MB, y ya será
el SMTP del ISP el que se "chupe" los 40MB al tener que repartir el correo
entre 10 direcciones.
Todavía no sé muy bien cómo hacer la regla, me queda aún mirarlo más, pero por
lo que he leído en la documentación parece que se puede ejecutar un comando
al que se le pasa por stdin el correo recibido en CommuniGate si éste cumple
alguna regla previamente definida (en este caso ser mayor de 500KB).
Yo había pensado en pasar el correo a un programa externo que lo que lo
enviase en bruto al SMTP del ISP. Pero claro, necesito un programa que haga
eso.
Es decir, necesito un programa que dialogue con un SMTP especificado y le
envíe el correo contenido en un archivo de texto. Dicho archivo YA contiene
los campos "From", "To" y todos los demás (es un correo generado por algún
cliente de correo, p.ej: Outlook), así que a dicho programilla NO le tengo
que pasar como parámetros los destinatarios y el remitente, tiene que ser
capaz de extraerlos del archivo.
Yo había pensado en usar el programa "sendemail" pero tras muchas pruebas y
leer la documentación concluyo que no me sirve pues requiere que se le pasen
los parámetros del remitente y destinatarios obligatoriamente, o sea, no los
puede extraer de un correo anteriormente generado.
¿Sabéis si existe algún programa que haga EXACTAMENTE lo que busco? pongo otro
ejemplo para dejar bien claro lo que necesito:
- Abro mi Kmail y creo un correo (pongo remitente, destinatario, asunto y
cuerpo). En vez de enviar el correo lo guardo en "Borrador".
- Abro una consola y voy a la carpeta de mi HOME donde Kmail guarda los
borradores.
- Resulta que el borrador se llama 1132590085.5963.Yjj4n.
- Uso ese programa que necesito (llamémosle PROGRAMA) de la siguiente forma:
PROGRAMA 1132590085.5963.Yjj4n --server smtp.isp.com
de tal forma que NO tengo que poner manualmente el destinatario ni el
remitente porque PROGRAMA los extrae del fichero. Además con la opción
"--server" le digo que SMTP debe usar (para que no use el SMTP de mi máquina,
que es lo que quiero evitar).
Espero haber dejado claro lo que necesito, os agradecería mucho cualquier
sugerencia pero os pido que cualquier ayuda se pueda utilizar exactamente de
la forma que acabo de poner en el ejemplo, no me valen otras alternativas que
se alejen porque el escenario es el que es.
PD: De momento usan CommuniGate y no van a cambiar salvo imperiosa necesidad.
¿Alguien sabe si en Postfix se puede crear una regla de tal forma que al
recibir un correo de más de 500KB lo envíe en "bruto" a otro SMTP y que sea
éste último quien se encargue de repartir el correo a los destinatarios?
Muchas gracias por cualquier ayuda y un saludo a todos.
--
que a mí ni me va ni me viene... pero por comentar...
Reply to: