
Eu configurei um servidor de email postfix para minha rede local, que usaCarimbo postalcomo host inteligente. Isso realmente funciona bem. Mas minha impressora/copiadora Canon envia e-mails sem corpo de e-mail, mas apenas com anexo.
Isso gera um erro no lado do carimbo postal:ErrorCode: '300', Message: 'Provide either email TextBody or HtmlBody or both.'.
Portanto, gostaria de adicionar uma regra ao meu postfix para adicionar um TextBody ao e-mail, se estiver faltando, antes de encaminhar para o smarthost. Alguma ideia?
Responder1
Tive o mesmo problema com o Postmark para alguns e-mails em um par de/para específico. Usando um servidor de e-mail postfix, usei a função de isenção de responsabilidade no altermime para copiar a linha de assunto no corpo e apliquei alguma lógica "if" para que o altermime só fosse executado quando o e-mail fosse de/para os endereços especificados.
Há muitos artigos sobre como configurar o altermime, aqui está um deles: https://www.howtoforge.com/how-to-automatically-add-a-disclaimer-to-outgoing-emails-with-altermime-postfix-on-debian-squeeze
O artigo acima é para o Debian, mas também funciona principalmente em derivados do RedHat. Você precisará instalar o próprio programa usando dnf (ou yum) e usando o repositório EPEL.
Se você deseja apenas um corpo estático (como faria com um aviso de isenção de responsabilidade), não há mais nada a fazer além de aplicar alguma lógica if se não quiser que o texto seja aplicado a todos os e-mails.
Se você deseja adicionar a linha de assunto ao corpo, o truque aqui é enviar a linha de assunto para um arquivo temporário e, em seguida, usar esse arquivo como arquivo de isenção de responsabilidade no script.
Assim:
Pegue a linha de assunto e envie-a para um arquivo temporário:
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.$$
Então, onde o script precisar de um nome de arquivo, basta usar sub.$$, por exemplo
/usr/bin/altermime --input=in.$$ \
--disclaimer=sub.$$ \
--disclaimer-html=sub.$$ \
--xheader="X-SpecialContent-Header: TextAdded" || \
{ echo Message content rejected; exit $EX_UNAVAILABLE; }
Finalmente, não se esqueça de remover o arquivo temporário - há uma linha no topo do script que remove o arquivo de entrada, basta expandir essa linha para remover o arquivo sub.$$:
trap "rm -f in.$$ sub.$$" 0 1 2 3 15