Windows'ta giden SMTP soketi bağlantısı engellendi


2

SMTP protokolü üzerinden e-posta bildirimleri gönderen özel bir e-posta gönderme uygulamasına (Windows) sahibim. Bu, bir kod sorusu gibi görünebilir StackOverflow , ama öyle değil. Uygulama iyi çalışıyor ve e-posta gönderme işlevi harika çalışıyor. Sorun, bazı sistemlerde, özellikle de Windows 7 Ultimate masaüstü sistemimde, giden bağlantıların tanımlanması zor zamanlarım tarafından engellenmesidir.

Gördüğüm sorun, bağlantı kurulduktan çok kısa bir süre sonra soket bağlantısının kodla kapatılmış olmasıdır. 10053, hangisi 0x2745, hangisi WSAECONNABORTED"Kurulan bir bağlantı, ana makinenizdeki yazılım tarafından durduruldu." İçinde benim ana makinem ve bu haklıdır - uzaktaki sunucu bağlantı kesilmesinin kaynağı değildir. Bazen uygulama, kanal yukarıdan gelen güç tarafından tam olarak imha edilmeden önce 1-2 mesaj almak için zaman göndermeye devam eder.

İlk tahminim basit olduğu, güvenlik duvarı veya antivirüs olması gerektiği. Bu tür tek yazılım, güvenlik duvarı ve Windows Defender'da yerleşik olarak bulunur. Güvenlik duvarını kapatmak yardımcı değildir, Defender herhangi bir gerçek zamanlı aktivite yapacak şekilde ayarlanmamış, sadece talep üzerine çalıştırılabilir. Makine etki alanının bir parçası değil - saf bağımsız.

Buna ek olarak, SSL ve TLS ile güvenli bağlantılar göndermeyi denedim ve bu bir işe yaramadı. Aynı zamanda Google Mail sunucularına gönderme konusunda hiçbir sorunum yok. Bu kadar fark yaratan nedir bilmiyorum, iyi durumda Google sunucularından SSL sertifikası olabilir, ancak bu özel bir durum.

Sorular: faaliyetin uzak SMTP sunucusuna soket açmak ve posta işini yapmak olduğu düşünülürse, Windows'ta bu bağlantıyı zorla kapatma sebebi ne olabilir? Bu sorunu gidermek, nedenini bulmak ve devre dışı bırakmak için herhangi bir araç var mı?

2013-08-08 Güncelleme:

WireShark aşağıdaki TCP oturumunu gösterir:

Wireshark Log


1
Çoğu ISS, istenmeyen postaları engellemek için varsayılan olarak giden posta bağlantı noktalarını engeller (çoğu yalnızca SMTP, ancak bazıları daha saldırgandır ve bilinen tüm giden posta bağlantı noktalarını engeller). Sunucudaki bir SMTP bağlantı noktasına bağlanmayı denediyseniz, ISS'niz bunu engeller ve Windows bağlantının kesildiğini söyler. Engelleyip engellemediklerini öğrenmek için ISS'nize başvurun ve eğer öyleyse sizin için engelini kaldırabilecekler mi (bazı ISS'ler kişisel olarak iletişim kurar ve talep ederseniz sizi bir istisna olarak ekler).
Synetech

ISS bana uygun bir neden gibi görünmüyor: 1 Thunderbird, uygulamamın yapamayacağı e-postaları gönderdi. 2 Hata kodu dahili neden olduğunu gösteriyor (bilgisayarımın içinde), 3 Bağlantı kapatılmadan önce EHLO anlaşmasının tokalaşması gibi bir kaç ilk SMTP mesajı görebiliyorum, bu nedenle bağlantı ilk önce kuruluyor ve daha sonra bir nedenle kapatılıyor.
Roman R.

Yerel ve basit SMTP sunucusunu aynı makinede kurup kurmadığını görmek için ayarlayabilir misiniz? Bu, en azından ISS'ye veya herhangi bir harici ağa bağlı olarak makinenizi daraltmanıza izin verir.
Kerry

Yanıtlar:


1

Ağ trafiğini ör. WireShark size neler olduğu hakkında çok daha fazla şey söylerdi.

SMTP iletişim kutusundaki bağlantı kesilmelerinin nerede olduğu hakkında bir bilginiz var mı? Tamamen rastgele mi, yoksa herhangi bir SMTP komutuyla herhangi bir korelasyonu var mı? Kodunuzda sorunlara yol açabilecek beklenmedik bir olay olduğuna kesinlikle şüpheleniyorum.


Soru biraz eski, ama dış kaynaktan gelen bağlantının kopmadığını görmediğimi koklamayı ve gördüğümü hatırlıyorum. Hata ayıklayıcıda da kolayca izleyebileceğim kodumla bağlantıyı kesmedim.
Roman R.

Bağlantıyı sonlandıran herhangi bir TCP RST paketi gördüklerini ve nereden geldiklerini gördünüz mü ya da kodunuz, paket düzeyinde sonlandırılmakta olan gerçek TCP bağlantısının kanıtı olmadan kopmuş bağlantılara işaret eden hatalar verdi mi?
krisku

Evet, RST'nin benden uzaktaki müşteriye gönderildiğini görüyorum (yukarıdaki ekran görüntüsünü ekledi).
Roman R.

Ekran görüntüsündeki Paket # 9 (FIN), sunucunun HELO ile yanıt verdikten hemen sonra müşterinin bağlantıyı kapatmakta olduğunu gösteriyor gibi görünüyor. Koduna bakıp ne yaptığını bulman gerek. SMTP protokolünü kendiniz mi uyguladınız veya herhangi bir kütüphane kullanıyor musunuz? Hangi programlama dilini kullanıyorsunuz?
krisku

SChannel API ile gerçekleştirilen güvenli katman ile C ++. Koda bakıyorum ...
Roman R.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.