Penghantaran mel gagal apabila VPN disambung: cari peringkatnya
Tamat masa, ralat TLS dan balasan 5xx gagal pada peringkat berbeza. Kelaskan kegagalan, sahkan mod TLS port, kemudian bandingkan laluan, bukan kata laluan.
Mel yang berfungsi sepanjang pagi berhenti pada saat terowong naik, dan naluri pertama ialah menaip semula kata laluan. Naluri itu melangkau soalan yang lebih berguna: adakah klien sampai ke pelayan sama sekali, dan adakah ia pergi cukup jauh untuk menawarkan kelayakan? Tamat masa, ralat sijil dan balasan penolakan ialah tiga kegagalan berbeza, dan hanya yang ketiga melibatkan akaun. Telusuri peringkat demi peringkat dan VPN menjadi pemboleh ubah yang boleh diuji, bukan suspek yang disalahkan.
Langkah 1: kelaskan kegagalan sebelum menyentuh kelayakan
Baca ralat yang benar-benar dihasilkan oleh aplikasi, kemudian letakkan dalam salah satu daripada tiga bakul. Tamat masa atau set semula sambungan bermakna laluan TCP gagal; ralat TLS atau sijil bermakna laluan berfungsi dan jabat tangan tidak; balasan SMTP dengan kod bermakna pelayan mel menjawab dan membuat keputusan. Setiap bakul menunjuk kepada pemilik yang berbeza.
Bakul itu wajar dipisahkan kerana pembetulannya bercanggah. Memanjangkan tamat masa tidak membantu apabila pelayan menolak penghantar, dan menukar kata laluan tidak melakukan apa-apa apabila laluan disekat. Kod balasan ialah bukti paling berharga dalam senarai, kerana ia membuktikan seluruh rantaian pengangkutan berfungsi dan masalahnya ialah dasar atau identiti. Simpan teks tepat, termasuk mana-mana kod status lanjutan, sebelum mencuba semula.
Berhenti di sini jika anda tidak dapat menghasilkan semula kegagalan di luar VPN. Masalah yang muncul dalam satu aplikasi pada satu mesin belum menjadi masalah rangkaian.
Langkah 2: sahkan titik akhir dan mod TLS
Penghantaran mesej ialah perkhidmatan tersendiri, bukan perkara yang sama dengan geganti antara pelayan. Sahkan nama hos, port dan mod TLS daripada dokumentasi pembekal untuk penghantaran, kerana port biasa yang dipinjam daripada persediaan mel lain bukan bukti. Port 587 menjangka sapaan teks biasa diikuti STARTTLS, manakala port 465 menjangka TLS dari bait pertama.
openssl s_client -connect smtp.example.com:465 -servername smtp.example.com -quiet
openssl s_client -starttls smtp -connect smtp.example.com:587 -servername smtp.example.com -quiet
nc -vz smtp.example.com 587Menjalankan ujian yang salah antara kedua-duanya ialah tepat kesilapan yang dilakukan klien apabila dikonfigurasikan untuk mod yang lain. Jika ujian TLS tersirat tersangkut pada 587, atau ujian STARTTLS gagal pada 465, port dan mod tidak sepadan. Betulkan mod dalam klien dan bukan mematikan pengesahan sijil, yang mengubah ralat konfigurasi menjadi sambungan tidak disahkan. Pemisahan itu cukup lama untuk diseragamkan: TLS tersirat pada port 465 ialah susunan yang diterangkan dalam RFC 8314.
Ralat sijil di sini ialah maklumat dan bukan halangan. Ia menamakan identiti yang dikemukakan pelayan dan identiti yang dijangkakan klien, dan kedua-duanya boleh dibetulkan tanpa melemahkan sambungan.
Langkah 3: bandingkan laluan tanpa menukar akaun
Kekalkan titik akhir, akaun dan tetapan klien malar dan ubah laluan sahaja. Hantar sekali dengan terowong turun dan sekali dengan terowong naik, dan catat laluan serta alamat sumber yang akan dilihat pelayan. Jika kegagalan mengikut laluan, anda telah mengasingkannya; jika ia mengikut mesin, anda belum.
ip route get smtp.example.com
curl -v --ssl-reqd --url smtp://smtp.example.com:587 --user "$SMTP_USER" \
--mail-from [email protected] --mail-rcpt [email protected] --upload-file msg.txtTerowong penuh mengubah alamat sumber yang dilihat pembekal, dan sesetengah pembekal melayan sumber asing lebih ketat daripada kata laluan asing. Itu keputusan dasar di pihak mereka, dan ia boleh menjadi senarai kelabu, had kadar atau sekatan. Jangan menggeneralisasi daripada satu pembekal kepada semua, dan jangan menganggap peraturan NAT yang hilang menjelaskan setiap kegagalan. Transkrip curl menunjukkan peringkat mana yang gagal walaupun log aplikasi sendiri tidak menunjukkannya.
Jika terowong sepatutnya membawa trafik internet, penghalaan dan dasar keluarnya kedua-duanya mesti membenarkan destinasi ini. Terowong yang hanya membawa laluan peribadi membiarkan sambungan mel pada laluan setempat, yang merupakan perbandingan berbeza.
Langkah 4: hantar satu mesej tidak berbahaya dan catat balasannya
Betulkan peringkat yang gagal, kemudian hantar satu mesej tidak berbahaya melalui aplikasi yang sama dan bukan melalui halaman webmel. Apa yang anda uji ialah laluan penghantaran aplikasi itu sendiri, termasuk tetapan tersimpannya dan mod TLS-nya. Sesi webmel tidak membuktikan apa-apa tentangnya.
Catat balasan, port, mod TLS dan laluan yang anda gunakan, supaya orang seterusnya boleh menghasilkan semula hasilnya. Pelayar yang berfungsi dan ikon VPN hijau ialah pemerhatian tentang perkara lain. Jika mesej tiba, kerja yang tinggal ialah menjadikan konfigurasi itu lalai untuk setiap mesin yang menghantar melalui akaun ini.
Senarai semak lengkap apabila anda boleh menamakan peringkat yang gagal, port dan mod TLS yang digunakan klien, laluan yang dilalui mesej, dan balasan yang dikembalikan pelayan. Empat fakta itu mengubah masalah peti keluar yang kabur menjadi perubahan yang boleh disemak oleh seseorang.