E-posta adreslerini doğrulamak için MX kayıtlarını kullanma

3 Cevap php

Scenario:
I have a contact form on my web app, it gets alot of spam.
I am validating the format of email addresses loosely i.e. ^.+@.+\..+$
I am using a spam filtering service (defensio) but the spam scores returned are overlapping with valid messages. At a threshold of 0.4 some spam gets through and some customer's questions are wrongly thrown in a log and an error displayed.

Spam mesajların tüm sahte e-posta adresleri örneğin kullanın zxmzxm@ywduasm.com

ABD, mysql, Dedicated PHP5 Linux sunucu (saklı değil) olmayan spam mesajları, e-posta, sadece istenmeyen günlüğü.

Proposal: Use php's checkdnsrr(preg_replace(/^.+?@/, '', $_POST['email']), 'MX') to check the email domain resolves to a valid address, log to file, then redirect with an error for messages that don't resolve, proceed to the spam filter service as before for addresses that do resolve according to checkdnsrr().

Okudum (ve ben kendimi bu konuda şüpheci) uzaktan aramalarını kadar doğrulama bu tür asla terk gerektiğini, ama neden?

Aside from connectivity issues, where i will have bigger problems than a contact form anyway, is checkdnsrr going to encounter false positives/negatives?
Would there be some address types that wont resolve? gov addresses? ip email addresses?
Do i need to escape the hostname i pass to checkdnsrr()?

Solution: A combination of all three answers (wish i could accept more than one as a compound answer).

Ben kullanıyorum:

$email_domain = preg_replace('/^.+?@/', '', $email).'.';
if(!checkdnsrr($email_domain, 'MX') && !checkdnsrr($email_domain, 'A')){
   //validation error
}

All spam is being logged and rotated. With a view to upgrading to a job queue at a later date.

Bazı yorumlar doğrulamak için kullanıcı için posta sunucusu hakkında soran, ben bu çok fazla trafik olacak ve benim sunucu yasaklandı alabilirsiniz ya da bir şekilde belaya hissettirdi, ve bu sadece ediliyordu e-postaların en kesip etmektir edildi geri nedeniyle geçersiz sunucu adresleri gidiyordu.

http://en.wikipedia.org/wiki/Fqdn and

RFC2821
The lookup first attempts to locate an MX record associated with the name.
If a CNAME record is found instead, the resulting name is processed as if 
it were the initial name.
If no MX records are found, but an A RR is found, the A RR is treated as
if it was associated with an implicit MX RR, with a preference of 0,
pointing to that host.  If one or more MX RRs are found for a given
name, SMTP systems MUST NOT utilize any A RRs associated with that
name unless they are located using the MX RRs; the "implicit MX" rule
above applies only if there are no MX records present.  If MX records
are present, but none of them are usable, this situation MUST be
reported as an error.

Tüm (özellikle A kaydı dönüş bahşiş için ZoogieZork) çok teşekkürler

3 Cevap

I checkdnsrr() ile bir MX araması yaparken hiçbir beis görmüyor ve ben de yanlış pozitif görünebilir nasıl görmüyorum. Sen (ancak bu teknik ve muhtemelen bazı yanlış alacak olabilir aslında bu tekniği kullanabilirsiniz ve daha fazla kullanıcı, belirli bir ana, varsa MTA ve test konuşarak ona küçük almak, hostname kaçmak gerekmez Bazı konaklarda pozitifler).

DNS aramalarını ağ trafiğine bağlı olarak, zaman zaman yavaş olabilir ve olabilir tıkanıklık, böylece farkında olmak bir şey.

Ben senin yerinde olsaydım, ben bunu test ve nasıl gidiyor görmek istiyorum. Bir hafta ya da öylesine, bir veritabanı veya günlük dosyasına tüm e-postaları oturum ve spam veya meşru e-posta olarak işaretlenmiş olacaktır olmadığını belirtmek için bir alan bulunmaktadır. Hafta bittikten sonra, sonuçlarına bir göz atın ve beklediğiniz gibi performans olup olmadığını görmek.

Bu günlüğü / test yaklaşım alarak size bunu test ve değil müşteri e-postaları kaybetme konusunda endişelenmenize esneklik verir.

Ben bunu bir spam bot tarafından teslim ediliyor varsayalım o dolu olursa, CSS ile gizli benim formlar için ekstra alan ekleme alışkanlığı kazanılmış ettik. Ben de "url" veya bir spam bot için meşru bir alan adı benziyor "website_url" bir şey gibi adını kullandığınızdan emin olun. Birinin tarayıcı doğru kılmaz, onlar istenmeyen alanını doldurmak için değil bilecek "gibi bir şey bu alanı doldurmanız etmeyin" diyor alan için bir etiket ekleyin. Şimdiye kadar benim için de çok iyi çalışıyor.

Eğer e-posta adresi geçerli kendisidir sağlamak istiyorsanız bir MX Arama resmin sadece bir parçasıdır, o zaman bu hesaba bir e-posta göndermek teşebbüs etmek gerek.

Diğer olası senaryo birisi sadece zaten bir tehlikeye makineden kaçırıldı e-posta hesaplarını kullanarak olabilir, olduğunu. Tabii ki, muhtemelen biraz daha az olasılığı, ama hala yok.

Bunu orada e-posta adresi doğrulama kütüphaneleri vardır, sadece e-posta doğrulama için arayın.

Bu her zaman uyumsuz olarak yapılabilir. Ben e-posta işi yürütmek için zamanı geldiğinde, herhangi bir ek doğrulama zaman içinde bu noktada yapılır, sonra bir iş sıraya, (denetim amaçlı) veritabanına kaydedilir ve bu durumda benim sitede bu kurulum var. Bu başka bir iş parçacığı için ağır kaldırma yükünü.

Kullanıcı için, e-posta zaten gönderildi sanki, (o veritabanında bulunuyor) idi, ve içten görülebilir, ancak bu iş hemen veya bazı set olabilir hangi yürütür kadar gerçek e-posta üzerinden gönderilecek almazsınız görüntülenir Sunucu yüke bağlı olarak zaman miktarı.

Walter