
He configurado un servidor de correo postfix para mi red local, que utilizaMataselloscomo host inteligente. En realidad esto funciona bien. Pero mi impresora/copiadora Canon envía correos sin cuerpo, pero solo con archivos adjuntos.
Esto da un error en el lado del matasellos:ErrorCode: '300', Message: 'Provide either email TextBody or HtmlBody or both.'.
Por lo tanto, me gustaría agregar una regla a mi postfix para agregar un TextBody al correo si falta, antes de reenviarlo al smarthost. ¿Algunas ideas?
Respuesta1
Tuve el mismo problema con el matasellos de algunos correos electrónicos en un par específico de origen/destino. Utilizando un servidor de correo postfix, utilicé la función de descargo de responsabilidad en alterme para copiar la línea de asunto en el cuerpo y apliqué cierta lógica "si" para que alterme solo se ejecutara cuando el correo electrónico fuera de/a las direcciones especificadas.
Hay muchos artículos sobre cómo configurar altermeme, aquí tienes uno de ellos: https://www.howtoforge.com/how-to-automatically-add-a-disclaimer-to-outgoing-emails-with-altermime-postfix-on-debian-squeeze
El artículo anterior es para Debian, pero también funciona en gran medida con derivados de RedHat. Necesitará instalar el programa usando dnf (o yum) y usando el repositorio EPEL.
Si solo desea un cuerpo estático (como lo tendría con un descargo de responsabilidad), entonces no hay nada más que hacer aparte de aplicar algo de lógica si no desea que el texto se aplique a cada correo electrónico.
Si desea agregar la línea de asunto en el cuerpo, entonces el truco aquí es enviar la línea de asunto a un archivo temporal y luego usar ese archivo como archivo de exención de responsabilidad en el script.
Como esto:
Tome la línea de asunto y envíela a un archivo temporal:
subject=`grep -m 1 "Subject:" in.$$ | cut -d "<" -f 2 | cut -d ">" -f 1 | cut -d " " -f 2-`
echo -e "\r\n$subject\r\n" >sub.$$
Luego, cuando el script necesite un nombre de archivo, simplemente use sub.$$, por ejemplo
/usr/bin/altermime --input=in.$$ \
--disclaimer=sub.$$ \
--disclaimer-html=sub.$$ \
--xheader="X-SpecialContent-Header: TextAdded" || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
Finalmente, no olvide eliminar el archivo temporal: hay una línea en la parte superior del script que elimina el archivo de entrada, simplemente expanda esa línea para eliminar el archivo sub.$$:
trap "rm -f in.$$ sub.$$" 0 1 2 3 15