Skip to content

Instantly share code, notes, and snippets.

@lmmendes
Created May 13, 2014 14:58
Show Gist options
  • Save lmmendes/3151acb3ab29a66edcf5 to your computer and use it in GitHub Desktop.
Save lmmendes/3151acb3ab29a66edcf5 to your computer and use it in GitHub Desktop.
Fake / Temp e-mail validator
# encoding: utf-8
# Validates that the specified attributes are fake e-mail from temp domains
#
# class Person < ActiveRecord::Base
# validates :email, :fake_email => true
# end
#
# class Person < ActiveRecord::Base
# validates :email, :fake_email => { :exclude => ['bobmail.info'] }
# end
#
# class Person < ActiveRecord::Base
# validates :email, :fake_email => { :only => ['bobmail.info'] }
# end
#
# The validator expects that the e-mail is already a valid e-mail address
# it only check's if it's from a invalid temp domain
#
# If you want to validate only agaist a specific domain use +only+ attribute
# <tt>validates :email, :fake_email => { :only => ['bobmail.info'] }</tt>.
#
# If you want need to remove one or more domains from the default list use +exclude+ attribute
# <tt>validates :email, :fake_email => { :exclude => ['bobmail.info'] }</tt>.
#
# Configuration options:
# * <tt>:message</tt> - A custom error message
# * <tt>:exclude</tt> - A list of e-mails to exclude from the validation list
# * <tt>:only</tt> - Validate the domains only agaist the provided list
#
# There is also a list of default options supported by every validator:
# +:if+, +:unless+, +:on+ and +:strict+.
# See <tt>ActiveModel::Validation#validates</tt> for more information
class FakeEmailValidator < ActiveModel::EachValidator
TEMP_EMAILS = %w(
0-mail.com
0815.ru
0clickemail.com
0wnd.net
0wnd.org
10minutemail.com
20minutemail.com
2prong.com
30minutemail.com
3d-painting.com
4warding.com
4warding.net
4warding.org
60minutemail.com
675hosting.com
675hosting.net
675hosting.org
6url.com
75hosting.com
75hosting.net
75hosting.org
7tags.com
9ox.net
a-bc.net
afrobacon.com
ajaxapp.net
amilegit.com
amiri.net
amiriindustries.com
anonbox.net
anonymbox.com
antichef.com
antichef.net
antispam.de
baxomale.ht.cx
beefmilk.com
binkmail.com
bio-muesli.net
bobmail.info
bodhi.lawlita.com
bofthew.com
brefmail.com
broadbandninja.com
bsnow.net
bugmenot.com
bumpymail.com
casualdx.com
centermail.com
centermail.net
chogmail.com
choicemail1.com
cool.fr.nf
correo.blogos.net
cosmorph.com
courriel.fr.nf
courrieltemporaire.com
cubiclink.com
curryworld.de
cust.in
dacoolest.com
dandikmail.com
dayrep.com
deadaddress.com
deadspam.com
despam.it
despammed.com
devnullmail.com
dfgh.net
digitalsanctuary.com
discardmail.com
discardmail.de
Disposableemailaddresses:emailmiser.com
disposableaddress.com
disposeamail.com
disposemail.com
dispostable.com
dm.w3internet.co.ukexample.com
dodgeit.com
dodgit.com
dodgit.org
donemail.ru
dontreg.com
dontsendmespam.de
dump-email.info
dumpandjunk.com
dumpmail.de
dumpyemail.com
e4ward.com
email60.com
emaildienst.de
emailias.com
emailigo.de
emailinfive.com
emailmiser.com
emailsensei.com
emailtemporario.com.br
emailto.de
emailwarden.com
emailx.at.hm
emailxfer.com
emz.net
enterto.com
ephemail.net
etranquil.com
etranquil.net
etranquil.org
explodemail.com
fakeinbox.com
fakeinformation.com
fastacura.com
fastchevy.com
fastchrysler.com
fastkawasaki.com
fastmazda.com
fastmitsubishi.com
fastnissan.com
fastsubaru.com
fastsuzuki.com
fasttoyota.com
fastyamaha.com
filzmail.com
fizmail.com
fr33mail.info
frapmail.com
front14.org
fux0ringduh.com
garliclife.com
get1mail.com
get2mail.fr
getonemail.com
getonemail.net
ghosttexter.de
girlsundertheinfluence.com
gishpuppy.com
gowikibooks.com
gowikicampus.com
gowikicars.com
gowikifilms.com
gowikigames.com
gowikimusic.great-host.in
greensloth.com
gsrv.co.uk
guerillamail.biz
guerillamail.com
guerillamail.net
guerillamail.org
guerrillamail.biz
guerrillamail.com
guerrillamail.de
guerrillamail.net
guerrillamail.org
guerrillamailblock.com
h.mintemail.com
h8s.org
haltospam.com
hatespam.org
hidemail.de
hochsitze.com
hotpop.com
hulapla.de
ieatspam.eu
ieatspam.info
ihateyoualot.info
iheartspam.org
imails.info
inboxclean.com
inboxclean.org
incognitomail.com
incognitomail.net
incognitomail.org
insorg-mail.info
ipoo.org
irish2me.com
iwi.net
jetable.com
jetable.fr.nf
jetable.net
jetable.org
jnxjn.com
junk1e.com
kasmail.com
kaspop.com
keepmymail.com
killmail.com
killmail.net
kir.ch.tc
klassmaster.com
klassmaster.net
klzlk.com
kulturbetrieb.info
kurzepost.de
letthemeatspam.com
lhsdv.com
lifebyfood.com
link2mail.net
litedrop.com
lol.ovpn.to
lookugly.com
lopl.co.cc
lortemail.dk
lr78.com
m4ilweb.info
maboard.com
mail-temporaire.fr
mail.by
mail.mezimages.net
mail2rss.org
mail333.com
mail4trash.com
mailbidon.com
mailblocks.com
mailcatch.com
mmailinater.com
mailinator.com
mailinator.net
mailinator2.com
mailincubator.com
mailme.ir
mailme.lv
mailmetrash.com
mailmoat.com
mailnator.com
mailnesia.com
mailnull.com
mailshell.com
mailsiphon.com
mailslite.com
mailzilla.com
mailzilla.org
mbx.cc
mega.zik.dj
meinspamschutz.de
meltmail.com
messagebeamer.de
mierdamail.com
mintemail.com
moburl.com
moncourrier.fr.nf
monemail.fr.nf
monmail.fr.nf
msa.minsmail.com
mt2009.com
mx0.wwwnew.eu
mycleaninbox.net
mypartyclip.de
myphantomemail.com
myspaceinc.com
myspaceinc.net
myspaceinc.org
myspacepimpedup.com
myspamless.com
mytrashmail.com
neomailbox.com
nepwk.com
nervmich.net
nervtmich.net
netmails.com
netmails.net
netzidiot.de
neverbox.com
no-spam.ws
nobulk.com
noclickemail.com
nogmailspam.info
nomail.xl.cx
nomail2me.com
nomorespamemails.com
nospam.ze.tc
nospam4.us
nospamfor.us
nospamthanks.info
notmailinator.com
nowmymail.com
nurfuerspam.de
nus.edu.sg
nwldx.com
objectmail.com
obobbo.com
oneoffemail.com
onewaymail.com
online.ms
oopi.org
ordinaryamerican.net
otherinbox.codupmyspace.com
pjjkp.com
politikerclub.de
poofy.org
pookmail.com
privacy.net
proxymail.eu
prtnx.com
punkass.com
PutThisInYourSpamDatabase.com
qq.com
quickinbox.com
rcpt.at
recode.me
recursor.net
regbypass.com
regbypass.comsafe-mail.net
rejectmail.com
rklips.com
rmqkr.net
rppkn.com
rtrtr.com
s0ny.net
safe-mail.net
safersignup.de
safetymail.info
safetypost.de
sandelf.de
saynotospams.com
selfdestructingmail.com
SendSpamHere.com
sharklasers.com
shiftmail.com
shitmail.me
shortmail.net
sibmail.com
skeefmail.com
slaskpost.se
slopsbox.com
smellfear.com
snakemail.com
sneakemail.com
sofimail.com
sofort-mail.de
sogetthis.com
soodonims.com
spam.la
spam.su
spamavert.com
spambob.com
spambob.net
spambob.org
spambog.com
spambog.de
spambog.ru
spambox.info
spambox.irishspringrealty.com
spambox.us
spamcannon.com
spamcannon.net
spamcero.com
spamcon.org
spamcorptastic.com
spamcowboy.com
spamcowboy.net
spamcowboy.org
spamday.com
spamex.com
spamfree24.com
spamfree24.de
spamfree24.eu
spamfree24.info
spamfree24.net
spamfree24.org
spaerePlease.com
spamhole.com
spamify.com
spaminator.de
spamkill.info
spaml.com
spaml.de
spammotel.com
spamobox.com
spamoff.de
spamslicer.com
spamspot.com
spamthis.co.uk
spamthisplease.com
spamtrail.com
speed.1s.fr
supergreatmail.com
supermailer.jp
suremail.info
teewars.org
teleworm.com
tempalias.com
tempe-mail.com
tempemail.biz
tempemail.com
TempEMail.net
tempinbox.co.uk
tempinbox.com
tempmail.it
tempmail2.com
tempomail.fr
temporarily.de
temporarioemail.com.br
temporaryemail.net
temporaryforwarding.com
temporaryinbox.com
thanksnospam.info
thankyou2010.com
thisisnotmyrealemail.com
throwawayemailaddress.com
tilien.com
tmailinator.com
tradermail.info
trash-amil.com
trash-mail.at
trash-mail.com
trash-mail.de
trash2009.com
trashemail.de
trashmail.at
trashmail.com
trashmail.de
trashmail.me
trashmail.net
trashmail.org
trashmail.ws
trashmailer.com
trashymail.com
trashymail.net
trillianpro.com
turual.com
twinmail.de
tyldd.com
uggsrock.com
upliftnow.com
uplipht.com
venompen.com
veryrealemail.com
viditag.com
viewcastmediae
wegwerfemail.de
wegwerfmail.de
wegwerfmail.net
wegwerfmail.org
wetrainbayarea.com
wetrainbayarea.org
wh4f.org
whyspam.me
willselfdestruct.com
winemaven.info
wronghead.com
wuzup.net
wuzupmail.net
www.e4ward.com
www.gishpuppy.com
www.mailinator.com
wwwnew.eu
xagloo.com
xemaps.com
xents.com
xmaily.com
xoxy.net
yep.it
yogamaven.com
yopmail.com
yopmail.fr
yopmail.net
ypmail.webarnak.fr.eu.org
yuurok.com
zehnminutenmail.de
zippymail.info
zoaxe.com
zoemail.org
drdrb.com
emeil.in
azmeil.tk
mailfa.tk
inbax.tk
emeil.ir
dt.com
evopo.com
great-host.in
maileater.com
mailexpire.com
mailin8r.com
mailismagic.com
mailmetrash.comilzilla.org
ovpn.to
owlpic.com
sendspamhere.com
spa.com
teleworm.us
tempemail.net
webm4il.info
)
def validate_each(record, attribute, value)
# try to match and grab the entire value between @ and the end of the string
# so "luis@gmail.com" should return "gmail.com" (the match is case insensitive)
regex_match = value.to_s.match(/@(.*)$/i)
return if regex_match.nil?
# store the matched domain
domain = regex_match[1]
# check if a list of valid domains to check agaist is passed if not use our internal list
if options[:only]
domains = options[:only].kind_of?(Array) ? options[:only] : [ options[:only] ]
else
domains = TEMP_EMAILS
end
# if user provided a exclude list remove that e-mails from our internal list and validate
# against the remaning domain list
if options[:exclude]
domains = domains - ( options[:exclude].kind_of?(Array) ? options[:exclude] : [ options[:exclude] ] )
end
if domains.include?( domain )
record.errors[attribute] << (options[:message] || :fake_email)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment