Pourquoi les commandes de tuyauterie dans telnet entraînent-elles des défaillances de connexion intermittentes?

0

En guise de solution de contournement bon marché sur un certain nombre de serveurs qui ne disposent pas du mail commande, un script qui résonne les commandes SMTP dans une session telnet a été écrit. La partie pertinente du script ressemble à

telnet mailserver 25 << EOF
EHLO $HOST
MAIL FROM: root@$HOST
(and so on)
EOF

Cela échoue par intermittence, avec une "connexion fermée par l'hôte distant". UNE tcpdump d'une session en échec confirme que le serveur de messagerie Postfix ferme la connexion immédiatement après l'envoi du 220 message de bienvenue. C'est-à-dire qu'aucune des redirection d'entrée n'a été effectuée sur le fil.

Jusqu’à présent, je n’ai pas été en mesure de cerner les conditions de cet échec, mais je peux confirmer que l’utilisation de nc (netcat) fonctionne parfaitement, à chaque fois.

Un certain nombre de questions sur ce site et Stack Overflow sont catégoriques: nc est le bon outil pour ce travail. Je suis intéressé par Pourquoi c'est le cas.

  • Pourquoi l'échec est-il intermittent?
  • Pourquoi le serveur de messagerie raccroche-t-il avant qu'une seule ligne d'entrée provenant du redirigé ne soit envoyée sur le réseau?
  • Pourquoi telnet pause mais netcat ne pas?
Mikey T.K.
la source

Réponses:

-1

Cela se produit le plus souvent à cause des retards de l'hôte de messagerie ignorés. L'envoi d'un courrier électronique nécessite une connexion, puis une réponse. Si le message MAIL FROM est émis avant que le serveur ait répondu, l'envoi échouera. En effet, certains serveurs s’attendent à retarder légèrement cette réponse HELO afin d’arrêter cette pompe et à fermer le comportement de connexion, comme le font souvent les spammeurs.

Il existe des moyens de gérer cela (ne pas utiliser Telnet comme étant le meilleur), mais utiliser autrement un script de discussion. Si cela ne vous est pas disponible, l'ajout manuel de retards ne résoudra pas le problème, mais le limitera considérablement.

Comme vous semblez utiliser un type d’environnement Linux, l’utilisation de nc (netcat) sur Telnet est considérée comme une pratique recommandée. La dernière partie de ce Ce lien montre comment utiliser netcat et "s’attendre à" pour mieux envoyer un courrier électronique et gérer correctement les timings.

davidgo
la source
Netcat remplace Telnet et ne peut pas être utilisé via telnet. Si le manque de retard était le problème, netcat subirait le même sort.
psusi
Dans cette partie du monde, "over" dans ce contexte "over" implique "plutôt que". Utiliser nc pour parler au dessus de telnet est non absurde dans ce contexte.
davidgo
Je vois, mais quand même pourquoi nc vs telnet ferait-il une différence? Ils se connectent tous les deux à l'hôte distant et envoient ce que vous leur donnez.
psusi
Justement la question posée ici ...
Mikey T.K.