[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: