Je rencontre un problème avec un système NAGIOS qui envoie des e-mails à un service e-mail vers SMS populaire. Le service e-mail vers SMS prend les e-mails avec du texte dans la Subject:
ligne et les envoie au numéro de téléphone portable encodé dans le To:
champ. Jusqu'ici tout va bien. Malheureusement, sendmail (et le suffixe précédent) semblent insérer un CRLF gratuit dans la ligne (nécessairement longue) Subject:
, ce qui provoque la troncature de mes SMS au CRLF si et seulement si la Subject:
ligne contient un ou plusieurs deux-points après le gratuit CRLF.
Je suis convaincu que les messages sont créés correctement, mais juste pour être sûr, voici que je me crée un message de test complètement noddy, avec une longue Subject:
ligne:
echo "foo" | mail -s "1234567 101234567 201234567 301234567 401234567 501234567 601234567 701234567 801234567 90123456789" [email protected]
Notez qu'il n'y a pas de deux points supplémentaires dans cette Subject:
ligne; tout ce que je fais ici est de montrer qu'un CRLF supplémentaire est inséré sur le fil. Voici le résultat de sudo ngrep -x port 25
:
44 61 74 65 3a 20 46 72 69 2c 20 33 31 20 4d 61 Date: Fri, 31 Ma
79 20 32 30 31 33 20 31 30 3a 34 33 3a 35 35 20 y 2013 10:43:55
2b 30 31 30 30 0d 0a 54 6f 3a 20 72 65 61 70 65 +0100..To: reape
72 40 74 65 61 70 61 72 74 79 2e 6e 65 74 0d 0a [email protected]..
53 75 62 6a 65 63 74 3a 20 31 32 33 34 35 36 37 Subject: 1234567
20 31 30 31 32 33 34 35 36 37 20 32 30 31 32 33 101234567 20123
34 35 36 37 20 33 30 31 32 33 34 35 36 37 20 34 4567 301234567 4
30 31 32 33 34 35 36 37 20 35 30 31 32 33 34 35 01234567 5012345
36 37 0d 0a 20 36 30 31 32 33 34 35 36 37 20 37 67.. 601234567 7
30 31 32 33 34 35 36 37 20 38 30 31 32 33 34 35 01234567 8012345
36 37 20 39 30 31 32 33 34 35 36 37 38 39 0d 0a 67 90123456789..
55 73 65 72 2d 41 67 65 6e 74 3a 20 48 65 69 72 User-Agent: Heir
6c 6f 6f 6d 20 6d 61 69 6c 78 20 31 32 2e 34 20 loom mailx 12.4
37 2f 32 39 2f 30 38 0d 0a 4d 49 4d 45 2d 56 65 7/29/08..MIME-Ve
72 73 69 6f 6e 3a 20 31 2e 30 0d 0a 43 6f 6e 74 rsion: 1.0..Cont
65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 ent-Type: text/p
6c 61 69 6e 3b 20 63 68 61 72 73 65 74 3d 75 73 lain; charset=us
Environ à mi-chemin (marqué en gras + italique), entre le 501234567
et le 601234567
dans l' en- Subject:
tête d' origine , vous pouvez voir un CRLF inséré ( 0x0d 0x0a
, sur le vidage hexadécimal gauche, ..
sur le texte brut droit).
Le MTA de réception semble heureux de post-traiter cela, et lorsque je regarde le courrier stocké sur disque à la fin de la réception, je ne vois qu'un LF (0x0a) dans la ligne Subject: et la ligne est analysée correctement et dans son par, par exemple alpine
. Néanmoins, le CRLF est là sur le fil, et entre moi et les (excellents) supporteurs d'email vers SMS, nous avons établi que ceux-ci sont la cause du problème.
Ma question est donc: est-il légal pour un MTA d'insérer un CRLF gratuit sur le fil?
Si c'est le cas, et je peux le prouver, alors c'est le problème de la maison de messagerie électronique par SMS, car ils sont intolérants. Si ce n'est pas le cas, ou si c'est le cas, mais je ne peux pas le prouver, alors cela devient mon problème, donc une réponse avec des références serait très utile.
Edit : Je peux maintenant comprendre que le service e-mail vers SMS en question est kapow . Une fois que ce problème leur a été expliqué, ils l'ont compris, ont travaillé avec moi pour développer et tester un correctif et ont déployé le correctif. Mes longues lignes d'objet avec deux points sont désormais correctement relayées dans les SMS. Normalement, je ne trompe pas les entreprises individuelles, surtout pas sur SF, mais je pense qu'il vaut la peine de noter que kapow a fait la bonne chose. (Avis de non-responsabilité: je n'ai aucun lien avec Kapow, sauf en tant que client payant qui est satisfait de la façon dont il a traité son problème.)
Le serveur Sendmail (SendMail) impose des limites de longueur de ligne mais il est beaucoup plus élevé (990 octets ou plus pour les expéditeurs smtp).
SendMail! = SendEmail
Si je comprends bien, Nagios utilise par défaut le client SendEmail pour envoyer des e-mails. Il semble que le client de messagerie que vous utilisez Nagios impose de telles limites "sévères" sur la longueur de l'en-tête / de la ligne d'objet de l'e-mail.
Vérifiez et signalez le client de messagerie configuré dans le
commands.cfg
fichier de configuration.(
notify-host-by-email
etnotify-service-by-email
paramètres).la source
L=
/F=L
, et je suis d'accord avec vous que ce n'est pas le problème. Mon NAGIOS envoie simplement en utilisantecho "" | mail -s "$VARIABLE$ $ANOTHERVAR$
"- mais en tout cas, le problème est plus profond que cela, c'est pourquoi j'ai cité l'mail
exemple simple ci-dessus - pour retirer NAGIOS de l'image.