spam_email 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -3
- data/Rakefile +9 -0
- data/data/provider_list.txt +858 -0
- data/lib/spam_email/blacklist.rb +558 -0
- data/lib/spam_email/list_compiler.rb +36 -0
- data/lib/spam_email/version.rb +1 -1
- data/lib/spam_email.rb +10 -6
- data/spam_email.gemspec +1 -0
- data/spec/spam_email_validator_spec.rb +22 -12
- metadata +31 -15
- data/lib/spam_email/domains.rb +0 -775
@@ -0,0 +1,558 @@
|
|
1
|
+
module SpamEmail
|
2
|
+
BLACKLIST = { "0815.ru" => true,
|
3
|
+
"10minutemail.com" => true,
|
4
|
+
"10x9.com" => true,
|
5
|
+
"126.com" => true,
|
6
|
+
"1337-crew.to" => true,
|
7
|
+
"139.com" => true,
|
8
|
+
"163.com" => true,
|
9
|
+
"188.com" => true,
|
10
|
+
"1pad.de" => true,
|
11
|
+
"20minutemail.com" => true,
|
12
|
+
"21cn.com" => true,
|
13
|
+
"21cn.net" => true,
|
14
|
+
"2prong.com" => true,
|
15
|
+
"30minutemail.com" => true,
|
16
|
+
"30minutenmail.eu" => true,
|
17
|
+
"30minutesmail.com" => true,
|
18
|
+
"3d-painting.com" => true,
|
19
|
+
"4warding.com" => true,
|
20
|
+
"60-minuten-mail.de" => true,
|
21
|
+
"6ip.us" => true,
|
22
|
+
"7tags.com" => true,
|
23
|
+
"ahsa.ws" => true,
|
24
|
+
"aichyna.com" => true,
|
25
|
+
"ajman.ws" => true,
|
26
|
+
"ama-trade.de" => true,
|
27
|
+
"ama-trans.de" => true,
|
28
|
+
"anhorn.de" => true,
|
29
|
+
"ano.to" => true,
|
30
|
+
"anonmail.de" => true,
|
31
|
+
"anonmails.de" => true,
|
32
|
+
"anonymbox.com" => true,
|
33
|
+
"anonymousmail.de" => true,
|
34
|
+
"anonymousspeech.com" => true,
|
35
|
+
"antichef.net" => true,
|
36
|
+
"antireg.ru" => true,
|
37
|
+
"antispam.de" => true,
|
38
|
+
"antispammail.de" => true,
|
39
|
+
"armyspy.com" => true,
|
40
|
+
"au.ru" => true,
|
41
|
+
"autorambler.ru" => true,
|
42
|
+
"baseoftrash.de" => true,
|
43
|
+
"beefmilk.com" => true,
|
44
|
+
"bigmir.net" => true,
|
45
|
+
"binkmail.com" => true,
|
46
|
+
"bio-muesli.net" => true,
|
47
|
+
"bk.ru" => true,
|
48
|
+
"bobmail.info" => true,
|
49
|
+
"bodhi.lawlita.com" => true,
|
50
|
+
"bofthew.com" => true,
|
51
|
+
"bookee.com" => true,
|
52
|
+
"bootybay.de" => true,
|
53
|
+
"breakthru.com" => true,
|
54
|
+
"brefmail.com" => true,
|
55
|
+
"broadbandninja.com" => true,
|
56
|
+
"bsnow.net" => true,
|
57
|
+
"bspamfree.org" => true,
|
58
|
+
"bugmenot.com" => true,
|
59
|
+
"bund.us" => true,
|
60
|
+
"bymail.org" => true,
|
61
|
+
"byom.de" => true,
|
62
|
+
"card.zp.ua" => true,
|
63
|
+
"casema.org" => true,
|
64
|
+
"cash.com" => true,
|
65
|
+
"cashette.com" => true,
|
66
|
+
"ccatv.org" => true,
|
67
|
+
"cellurl.com" => true,
|
68
|
+
"centermail.com" => true,
|
69
|
+
"centermail.net" => true,
|
70
|
+
"chammy.info" => true,
|
71
|
+
"cheatmail.de" => true,
|
72
|
+
"chogmail.com" => true,
|
73
|
+
"consumerriot.com" => true,
|
74
|
+
"cool.fr.nf" => true,
|
75
|
+
"correo10.com" => true,
|
76
|
+
"courriel.fr.nf" => true,
|
77
|
+
"courrieltemporaire.com" => true,
|
78
|
+
"crapmail.org" => true,
|
79
|
+
"cuvox.de" => true,
|
80
|
+
"dayrep.com" => true,
|
81
|
+
"deadaddress.com" => true,
|
82
|
+
"delikkt.de" => true,
|
83
|
+
"despam.it" => true,
|
84
|
+
"despammed.com" => true,
|
85
|
+
"devnullmail.com" => true,
|
86
|
+
"dingbone.com" => true,
|
87
|
+
"disposemail.com" => true,
|
88
|
+
"dispostable.com" => true,
|
89
|
+
"docmail.cz" => true,
|
90
|
+
"dodgeit.com" => true,
|
91
|
+
"dodgit.com" => true,
|
92
|
+
"dontassrape.us" => true,
|
93
|
+
"dontreg.com" => true,
|
94
|
+
"dontsendmespam.de" => true,
|
95
|
+
"drdrb.com" => true,
|
96
|
+
"dump-email.info" => true,
|
97
|
+
"dumpyemail.com" => true,
|
98
|
+
"duskmail.com" => true,
|
99
|
+
"dyndns.org" => true,
|
100
|
+
"e4ward.com" => true,
|
101
|
+
"easy.com" => true,
|
102
|
+
"easytrashmail.com" => true,
|
103
|
+
"einmalmail.de" => true,
|
104
|
+
"einrot.com" => true,
|
105
|
+
"eintagsmail.de" => true,
|
106
|
+
"email60.com" => true,
|
107
|
+
"emailgo.de" => true,
|
108
|
+
"emailias.com" => true,
|
109
|
+
"emaillime.com" => true,
|
110
|
+
"emailmiser.com" => true,
|
111
|
+
"emailsensei.com" => true,
|
112
|
+
"emailtemporanea.com" => true,
|
113
|
+
"emailtemporanea.net" => true,
|
114
|
+
"emailtemporario.com.br" => true,
|
115
|
+
"emailwarden.com" => true,
|
116
|
+
"emailx.at.hm" => true,
|
117
|
+
"epost4you.de" => true,
|
118
|
+
"e-postkasten.com" => true,
|
119
|
+
"e-postkasten.eu" => true,
|
120
|
+
"e-postkasten.info" => true,
|
121
|
+
"ero-tube.org" => true,
|
122
|
+
"europe.com" => true,
|
123
|
+
"express.net.ua" => true,
|
124
|
+
"eyepaste.com" => true,
|
125
|
+
"facebook.com" => true,
|
126
|
+
"fakedemail.com" => true,
|
127
|
+
"fakeinbox.com" => true,
|
128
|
+
"fakeinbox.net" => true,
|
129
|
+
"fakeinbox.org" => true,
|
130
|
+
"fakeinformation.com" => true,
|
131
|
+
"fansworldwide.de" => true,
|
132
|
+
"faza.ru" => true,
|
133
|
+
"filzmail.com" => true,
|
134
|
+
"fivemail.de" => true,
|
135
|
+
"fleckens.hu" => true,
|
136
|
+
"flitafir.de" => true,
|
137
|
+
"fornow.eu" => true,
|
138
|
+
"foxmail.com" => true,
|
139
|
+
"frapmail.com" => true,
|
140
|
+
"freemail.ms" => true,
|
141
|
+
"freespambox.com" => true,
|
142
|
+
"fromru.com" => true,
|
143
|
+
"fromru.ru" => true,
|
144
|
+
"front.ru" => true,
|
145
|
+
"fudgerub.com" => true,
|
146
|
+
"fujairah.us" => true,
|
147
|
+
"fujairah.ws" => true,
|
148
|
+
"fyii.de" => true,
|
149
|
+
"garliclife.com" => true,
|
150
|
+
"gehensiemirnichtaufdensack.de" => true,
|
151
|
+
"geschenkt.biz" => true,
|
152
|
+
"get2mail.fr" => true,
|
153
|
+
"getairmail.com" => true,
|
154
|
+
"getmails.eu" => true,
|
155
|
+
"getonemail.com" => true,
|
156
|
+
"giantmail.de" => true,
|
157
|
+
"gishpuppy.com" => true,
|
158
|
+
"go.ru" => true,
|
159
|
+
"golfilla.info" => true,
|
160
|
+
"grr.la" => true,
|
161
|
+
"guerrillamail.biz" => true,
|
162
|
+
"guerrillamail.com" => true,
|
163
|
+
"guerrillamail.de" => true,
|
164
|
+
"guerrillamail.info" => true,
|
165
|
+
"guerrillamail.net" => true,
|
166
|
+
"guerrillamail.org" => true,
|
167
|
+
"guerrillamailblock.com" => true,
|
168
|
+
"gustr.com" => true,
|
169
|
+
"hacker.tl" => true,
|
170
|
+
"hat-geld.de" => true,
|
171
|
+
"hebron.tv" => true,
|
172
|
+
"hidemail.de" => true,
|
173
|
+
"hidemyass.com" => true,
|
174
|
+
"hidzz.com" => true,
|
175
|
+
"hinet.net" => true,
|
176
|
+
"hmamail.com" => true,
|
177
|
+
"homedns.org" => true,
|
178
|
+
"hotbox.ru" => true,
|
179
|
+
"hotmail.ru" => true,
|
180
|
+
"hush.ai" => true,
|
181
|
+
"hush.com" => true,
|
182
|
+
"hushmail.com" => true,
|
183
|
+
"hushmail.me" => true,
|
184
|
+
"id.ru" => true,
|
185
|
+
"ieh-mail.de" => true,
|
186
|
+
"iespana.es" => true,
|
187
|
+
"imails.info" => true,
|
188
|
+
"inbox.ru" => true,
|
189
|
+
"inbox.si" => true,
|
190
|
+
"inboxclean.com" => true,
|
191
|
+
"infocom.zp.ua" => true,
|
192
|
+
"instant-mail.de" => true,
|
193
|
+
"ip6.li" => true,
|
194
|
+
"irbid.ws" => true,
|
195
|
+
"irish2me.com" => true,
|
196
|
+
"islammail.net" => true,
|
197
|
+
"jadida.org" => true,
|
198
|
+
"jetable.com" => true,
|
199
|
+
"jetable.fr.nf" => true,
|
200
|
+
"jetable.net" => true,
|
201
|
+
"jetable.org" => true,
|
202
|
+
"jnxjn.com" => true,
|
203
|
+
"jourrapide.com" => true,
|
204
|
+
"kaktusmail.de" => true,
|
205
|
+
"kasmail.com" => true,
|
206
|
+
"keepmymail.com" => true,
|
207
|
+
"klzlk.com" => true,
|
208
|
+
"kostenlosemailadresse.de" => true,
|
209
|
+
"koszmail.pl" => true,
|
210
|
+
"kuh.mu" => true,
|
211
|
+
"kurzepost.de" => true,
|
212
|
+
"kuwaiti.tv" => true,
|
213
|
+
"lags.us" => true,
|
214
|
+
"land.ru" => true,
|
215
|
+
"lawlita.com" => true,
|
216
|
+
"lenta.ru" => true,
|
217
|
+
"less.b0ne.com" => true,
|
218
|
+
"letthemeatspam.com" => true,
|
219
|
+
"lhsdv.com" => true,
|
220
|
+
"lifebyfood.com" => true,
|
221
|
+
"link2mail.net" => true,
|
222
|
+
"list.ru" => true,
|
223
|
+
"localhost.net" => true,
|
224
|
+
"localhost.org" => true,
|
225
|
+
"lolfreak.net" => true,
|
226
|
+
"lookugly.com" => true,
|
227
|
+
"lr78.com" => true,
|
228
|
+
"lubnan.ws" => true,
|
229
|
+
"m21.cc" => true,
|
230
|
+
"mail.by" => true,
|
231
|
+
"mail.ru" => true,
|
232
|
+
"mail.zp.ua" => true,
|
233
|
+
"mail15.com" => true,
|
234
|
+
"mail1a.de" => true,
|
235
|
+
"mail21.cc" => true,
|
236
|
+
"mail333.com" => true,
|
237
|
+
"mail4trash.com" => true,
|
238
|
+
"mailbiz.biz" => true,
|
239
|
+
"mailcatch.com" => true,
|
240
|
+
"mailde.de" => true,
|
241
|
+
"mailde.info" => true,
|
242
|
+
"maildrop.cc" => true,
|
243
|
+
"maileimer.de" => true,
|
244
|
+
"mailexpire.com" => true,
|
245
|
+
"mailfish.de" => true,
|
246
|
+
"mailforspam.com" => true,
|
247
|
+
"mailgate.ru" => true,
|
248
|
+
"mailin8r.com" => true,
|
249
|
+
"mailinater.com" => true,
|
250
|
+
"mailinator.com" => true,
|
251
|
+
"mailinator.net" => true,
|
252
|
+
"mailme.lv" => true,
|
253
|
+
"mailme24.com" => true,
|
254
|
+
"mailmetrash.com" => true,
|
255
|
+
"mailmoat.com" => true,
|
256
|
+
"mailms.com" => true,
|
257
|
+
"mailnator.com" => true,
|
258
|
+
"mailnesia.com" => true,
|
259
|
+
"mailnull.com" => true,
|
260
|
+
"mailorg.org" => true,
|
261
|
+
"mailscrap.com" => true,
|
262
|
+
"mailshell.com" => true,
|
263
|
+
"mail-temporaire.fr" => true,
|
264
|
+
"mailtome.de" => true,
|
265
|
+
"mailtothis.com" => true,
|
266
|
+
"mailtrash.net" => true,
|
267
|
+
"mailtv.net" => true,
|
268
|
+
"mailtv.tv" => true,
|
269
|
+
"makemetheking.com" => true,
|
270
|
+
"malahov.de" => true,
|
271
|
+
"mansoura.tv" => true,
|
272
|
+
"marsmail.de" => true,
|
273
|
+
"marsmail.eu" => true,
|
274
|
+
"mascara.ws" => true,
|
275
|
+
"masterhost.ru" => true,
|
276
|
+
"mega.yt" => true,
|
277
|
+
"mega.zik.dj" => true,
|
278
|
+
"meltmail.com" => true,
|
279
|
+
"messagebeamer.de" => true,
|
280
|
+
"mezimages.net" => true,
|
281
|
+
"ministry-of-silly-walks.de" => true,
|
282
|
+
"mintemail.com" => true,
|
283
|
+
"misterpinball.de" => true,
|
284
|
+
"moburl.com" => true,
|
285
|
+
"moncourrier.fr.nf" => true,
|
286
|
+
"monemail.fr.nf" => true,
|
287
|
+
"monmail.fr.nf" => true,
|
288
|
+
"monumentmail.com" => true,
|
289
|
+
"moyareklama.ru" => true,
|
290
|
+
"mt2009.com" => true,
|
291
|
+
"mt2014.com" => true,
|
292
|
+
"muscat.ws" => true,
|
293
|
+
"my10minutemail.com" => true,
|
294
|
+
"mycard.net.ua" => true,
|
295
|
+
"mycleaninbox.net" => true,
|
296
|
+
"mypartyclip.de" => true,
|
297
|
+
"myphantomemail.com" => true,
|
298
|
+
"myrambler.ru" => true,
|
299
|
+
"mysamp.de" => true,
|
300
|
+
"mytempemail.com" => true,
|
301
|
+
"mytempmail.com" => true,
|
302
|
+
"mytrashmail.com" => true,
|
303
|
+
"nabeul.info" => true,
|
304
|
+
"nabuma.com" => true,
|
305
|
+
"nepwk.com" => true,
|
306
|
+
"nervmich.net" => true,
|
307
|
+
"nervtmich.net" => true,
|
308
|
+
"netmails.net" => true,
|
309
|
+
"neverbox.com" => true,
|
310
|
+
"newmail.ru" => true,
|
311
|
+
"nextmail.ru" => true,
|
312
|
+
"nightmail.ru" => true,
|
313
|
+
"nlogn.de" => true,
|
314
|
+
"nm.ru" => true,
|
315
|
+
"nodns.org" => true,
|
316
|
+
"nomail.pw" => true,
|
317
|
+
"nomail.xl.cx" => true,
|
318
|
+
"nomail2me.com" => true,
|
319
|
+
"no-more-spam.com" => true,
|
320
|
+
"nomorespamemails.com" => true,
|
321
|
+
"no-spam.hu" => true,
|
322
|
+
"no-spam.ws" => true,
|
323
|
+
"nospam.ze.tc" => true,
|
324
|
+
"nospam4.us" => true,
|
325
|
+
"nospammail.net" => true,
|
326
|
+
"notmailinator.com" => true,
|
327
|
+
"notmyemail.com" => true,
|
328
|
+
"notsharingmy.info" => true,
|
329
|
+
"nowmymail.com" => true,
|
330
|
+
"nurfuerspam.de" => true,
|
331
|
+
"objectmail.com" => true,
|
332
|
+
"obobbo.com" => true,
|
333
|
+
"odnorazovoe.ru" => true,
|
334
|
+
"ok.ru" => true,
|
335
|
+
"omail.pro" => true,
|
336
|
+
"omani.ws" => true,
|
337
|
+
"one.lt" => true,
|
338
|
+
"oneoffemail.com" => true,
|
339
|
+
"onewaymail.com" => true,
|
340
|
+
"onlatedotcom.info" => true,
|
341
|
+
"online.ms" => true,
|
342
|
+
"opayq.com" => true,
|
343
|
+
"otherinbox.com" => true,
|
344
|
+
"oujda.biz" => true,
|
345
|
+
"ovpn.to" => true,
|
346
|
+
"owlpic.com" => true,
|
347
|
+
"pakistani.ws" => true,
|
348
|
+
"palmyra.ws" => true,
|
349
|
+
"pisem.net" => true,
|
350
|
+
"pjjkp.com" => true,
|
351
|
+
"pleasantphoto.com" => true,
|
352
|
+
"plexolan.de" => true,
|
353
|
+
"pochta.ru" => true,
|
354
|
+
"pochtamt.ru" => true,
|
355
|
+
"politikerclub.de" => true,
|
356
|
+
"pop3.ru" => true,
|
357
|
+
"porn.com" => true,
|
358
|
+
"pornoroxx.net" => true,
|
359
|
+
"privacy.net" => true,
|
360
|
+
"privacybox.net" => true,
|
361
|
+
"privatdemail.net" => true,
|
362
|
+
"proxymail.eu" => true,
|
363
|
+
"prtnx.com" => true,
|
364
|
+
"punkass.com" => true,
|
365
|
+
"putthisinyourspamdatabase.com" => true,
|
366
|
+
"qlfg.com" => true,
|
367
|
+
"qq.com" => true,
|
368
|
+
"quickinbox.com" => true,
|
369
|
+
"r0.ru" => true,
|
370
|
+
"rambler.ru" => true,
|
371
|
+
"rbcmail.ru" => true,
|
372
|
+
"rcpt.at" => true,
|
373
|
+
"realtyalerts.ca" => true,
|
374
|
+
"recode.me" => true,
|
375
|
+
"rfc822.org" => true,
|
376
|
+
"rhyta.com" => true,
|
377
|
+
"rmqkr.net" => true,
|
378
|
+
"ro.ru" => true,
|
379
|
+
"rtrtr.com" => true,
|
380
|
+
"ru.ru" => true,
|
381
|
+
"s0ny.net" => true,
|
382
|
+
"safat.biz" => true,
|
383
|
+
"safat.ws" => true,
|
384
|
+
"safe-mail.net" => true,
|
385
|
+
"safersignup.com" => true,
|
386
|
+
"safersignup.de" => true,
|
387
|
+
"safetymail.info" => true,
|
388
|
+
"safetypost.de" => true,
|
389
|
+
"sapya.com" => true,
|
390
|
+
"saynotospams.com" => true,
|
391
|
+
"schafmail.de" => true,
|
392
|
+
"schrott-email.de" => true,
|
393
|
+
"secmail.in" => true,
|
394
|
+
"secretemail.de" => true,
|
395
|
+
"sector2.org" => true,
|
396
|
+
"secure-email.org" => true,
|
397
|
+
"secure-mail.biz" => true,
|
398
|
+
"secure-mail.cc" => true,
|
399
|
+
"sendmail.ru" => true,
|
400
|
+
"senseless-entertainment.com" => true,
|
401
|
+
"sfax.ws" => true,
|
402
|
+
"sharklasers.com" => true,
|
403
|
+
"shieldemail.com" => true,
|
404
|
+
"shitmail.me" => true,
|
405
|
+
"shitmail.org" => true,
|
406
|
+
"sibmail.com" => true,
|
407
|
+
"sina.com" => true,
|
408
|
+
"sinnlos-mail.de" => true,
|
409
|
+
"skeefmail.com" => true,
|
410
|
+
"skim.com" => true,
|
411
|
+
"smashmail.de" => true,
|
412
|
+
"smeh.info" => true,
|
413
|
+
"smellfear.com" => true,
|
414
|
+
"smtp.ru" => true,
|
415
|
+
"sneakemail.com" => true,
|
416
|
+
"sneakmail.de" => true,
|
417
|
+
"snkmail.com" => true,
|
418
|
+
"sofimail.com" => true,
|
419
|
+
"sogetthis.com" => true,
|
420
|
+
"soodonims.com" => true,
|
421
|
+
"spam4.me" => true,
|
422
|
+
"spamail.de" => true,
|
423
|
+
"spamavert.com" => true,
|
424
|
+
"spamavert.no" => true,
|
425
|
+
"spambob.net" => true,
|
426
|
+
"spambog.ru" => true,
|
427
|
+
"spambooger.com" => true,
|
428
|
+
"spambox.us" => true,
|
429
|
+
"spamcorptastic.com" => true,
|
430
|
+
"spamday.com" => true,
|
431
|
+
"spamex.com" => true,
|
432
|
+
"spamfence.net" => true,
|
433
|
+
"spamfoodie.com" => true,
|
434
|
+
"spamfree.eu" => true,
|
435
|
+
"spamfree24.com" => true,
|
436
|
+
"spamfree24.de" => true,
|
437
|
+
"spamfree24.org" => true,
|
438
|
+
"spamgourmet.com" => true,
|
439
|
+
"spamherelots.com" => true,
|
440
|
+
"spamhereplease.com" => true,
|
441
|
+
"spamify.com" => true,
|
442
|
+
"spaml.com" => true,
|
443
|
+
"spaml.de" => true,
|
444
|
+
"spammotel.com" => true,
|
445
|
+
"spamobox.com" => true,
|
446
|
+
"spamscams.net" => true,
|
447
|
+
"spamslicer.com" => true,
|
448
|
+
"spamspot.com" => true,
|
449
|
+
"spamthis.co.uk" => true,
|
450
|
+
"spamx.ru" => true,
|
451
|
+
"speed.1s.fr" => true,
|
452
|
+
"spoofmail.de" => true,
|
453
|
+
"sry.li" => true,
|
454
|
+
"super-auswahl.de" => true,
|
455
|
+
"supergreatmail.com" => true,
|
456
|
+
"superrito.com" => true,
|
457
|
+
"suremail.info" => true,
|
458
|
+
"tagyourself.com" => true,
|
459
|
+
"teewars.org" => true,
|
460
|
+
"teleworm.us" => true,
|
461
|
+
"tempail.com" => true,
|
462
|
+
"tempemail.co.za" => true,
|
463
|
+
"tempe-mail.com" => true,
|
464
|
+
"tempemail.net" => true,
|
465
|
+
"tempinbox.co.uk" => true,
|
466
|
+
"tempinbox.com" => true,
|
467
|
+
"temp-mail.com" => true,
|
468
|
+
"tempmail.de" => true,
|
469
|
+
"tempmail.eu" => true,
|
470
|
+
"tempmail.info" => true,
|
471
|
+
"tempmail.org" => true,
|
472
|
+
"temp-mail.org" => true,
|
473
|
+
"temp-mail.ru" => true,
|
474
|
+
"tempmaildemo.com" => true,
|
475
|
+
"tempmailer.com" => true,
|
476
|
+
"tempmailer.de" => true,
|
477
|
+
"tempomail.fr" => true,
|
478
|
+
"temporarioemail.com.br" => true,
|
479
|
+
"temporaryemail.net" => true,
|
480
|
+
"temporaryforwarding.com" => true,
|
481
|
+
"temporaryinbox.com" => true,
|
482
|
+
"temporarymailaddress.com" => true,
|
483
|
+
"thankyou2010.com" => true,
|
484
|
+
"thc.st" => true,
|
485
|
+
"theanonymousemail.com" => true,
|
486
|
+
"thecannabishunter.com" => true,
|
487
|
+
"thisisnotmyrealemail.com" => true,
|
488
|
+
"thismail.net" => true,
|
489
|
+
"throwawayaddress.com" => true,
|
490
|
+
"tittbit.in" => true,
|
491
|
+
"tmailinator.com" => true,
|
492
|
+
"tom.com" => true,
|
493
|
+
"topranklist.de" => true,
|
494
|
+
"tormail.org" => true,
|
495
|
+
"tradedoubling.co.uk" => true,
|
496
|
+
"tradermail.info" => true,
|
497
|
+
"trash.name" => true,
|
498
|
+
"trash2009.com" => true,
|
499
|
+
"trashdevil.com" => true,
|
500
|
+
"trashemail.de" => true,
|
501
|
+
"trashemails.de" => true,
|
502
|
+
"trashmail.at" => true,
|
503
|
+
"trash-mail.at" => true,
|
504
|
+
"trash-mail.com" => true,
|
505
|
+
"trashmail.de" => true,
|
506
|
+
"trash-mail.de" => true,
|
507
|
+
"trashmail.me" => true,
|
508
|
+
"trashmail.net" => true,
|
509
|
+
"trashmail.org" => true,
|
510
|
+
"trashymail.com" => true,
|
511
|
+
"trialmail.de" => true,
|
512
|
+
"trillianpro.com" => true,
|
513
|
+
"tut.by" => true,
|
514
|
+
"twinmail.de" => true,
|
515
|
+
"tyldd.com" => true,
|
516
|
+
"ukr.net" => true,
|
517
|
+
"us.af" => true,
|
518
|
+
"users.1go.dk" => true,
|
519
|
+
"veryrealemail.com" => true,
|
520
|
+
"vidchart.com" => true,
|
521
|
+
"vpn.st" => true,
|
522
|
+
"vpnsmail.me" => true,
|
523
|
+
"vsimcard.com" => true,
|
524
|
+
"w00ttech.com" => true,
|
525
|
+
"wasteland.rfc822.org" => true,
|
526
|
+
"wegwerfadresse.de" => true,
|
527
|
+
"wegwerfemail.com" => true,
|
528
|
+
"wegwerfemail.de" => true,
|
529
|
+
"weg-werf-email.de" => true,
|
530
|
+
"wegwerf-emails.de" => true,
|
531
|
+
"wegwerfmail.de" => true,
|
532
|
+
"wegwerfmail.net" => true,
|
533
|
+
"wegwerfmail.org" => true,
|
534
|
+
"wh4f.org" => true,
|
535
|
+
"whyspam.me" => true,
|
536
|
+
"willhackforfood.biz" => true,
|
537
|
+
"willselfdestruct.com" => true,
|
538
|
+
"wreckedmail.net" => true,
|
539
|
+
"wreckedmail.org" => true,
|
540
|
+
"wuzupmail.net" => true,
|
541
|
+
"x3n.in" => true,
|
542
|
+
"xents.com" => true,
|
543
|
+
"xyzfree.net" => true,
|
544
|
+
"yandex.ru" => true,
|
545
|
+
"yeah.net" => true,
|
546
|
+
"yopmail.com" => true,
|
547
|
+
"yopmail.fr" => true,
|
548
|
+
"yopmail.net" => true,
|
549
|
+
"yourdomain.com" => true,
|
550
|
+
"yufz.com" => true,
|
551
|
+
"yuurok.com" => true,
|
552
|
+
"z1p.biz" => true,
|
553
|
+
"zehnminuten.de" => true,
|
554
|
+
"zehnminutenmail.de" => true,
|
555
|
+
"zippymail.info" => true,
|
556
|
+
"zmail.ru" => true,
|
557
|
+
"zoemail.net" => true }
|
558
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'ruby-progressbar'
|
2
|
+
|
3
|
+
module SpamEmail
|
4
|
+
class ListCompiler
|
5
|
+
# this method takes the list from data/provider_list.txt, resolves all mx
|
6
|
+
# entries and builds the blacklist-array
|
7
|
+
def self.compile_list
|
8
|
+
progress_bar = ProgressBar.create(total: File.size("data/provider_list.txt"), format: '%e |%b>>%i| %p%% %t')
|
9
|
+
|
10
|
+
resolving = []
|
11
|
+
file = File.open("data/provider_list.txt")
|
12
|
+
file.each_line do |domain|
|
13
|
+
domain.strip!
|
14
|
+
domain.downcase!
|
15
|
+
next if domain.empty?
|
16
|
+
|
17
|
+
mx = []
|
18
|
+
Resolv::DNS.open do |dns|
|
19
|
+
mx.concat dns.getresources(domain, Resolv::DNS::Resource::IN::MX)
|
20
|
+
end
|
21
|
+
|
22
|
+
if mx.any?
|
23
|
+
resolving << domain
|
24
|
+
end
|
25
|
+
progress_bar.progress = file.tell
|
26
|
+
end
|
27
|
+
|
28
|
+
hash_elements = resolving.collect { |v| "\"#{v}\" => true" }
|
29
|
+
|
30
|
+
dest_file = File.open("lib/spam_email/blacklist.rb", "w")
|
31
|
+
dest_file.write("module SpamEmail\n BLACKLIST = { ")
|
32
|
+
dest_file.write(hash_elements.join(",\n "))
|
33
|
+
dest_file.write(" }\nend")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/spam_email/version.rb
CHANGED
data/lib/spam_email.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require "spam_email/version"
|
2
|
-
require "spam_email/
|
2
|
+
require "spam_email/blacklist"
|
3
3
|
require 'active_model'
|
4
4
|
require 'active_model/validations'
|
5
5
|
require 'mail'
|
@@ -11,10 +11,14 @@ class SpamEmailValidator < ActiveModel::EachValidator
|
|
11
11
|
begin
|
12
12
|
m = Mail::Address.new(value)
|
13
13
|
return if m.domain.nil?
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
domain = m.domain.downcase
|
15
|
+
|
16
|
+
if SpamEmail::BLACKLIST[domain]
|
17
|
+
message = (options[:message] || I18n.t(:blacklisted, scope: "spam_email.validations.email"))
|
18
|
+
record.errors[attribute] << message
|
19
|
+
end
|
20
|
+
rescue RuntimeError
|
21
|
+
return
|
17
22
|
end
|
18
|
-
record.errors[attribute] << (options[:message] || I18n.t(:blacklisted, scope: "spam_email.validations.email")) if r
|
19
23
|
end
|
20
|
-
end
|
24
|
+
end
|
data/spam_email.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "rspec"
|
22
|
+
spec.add_development_dependency "ruby-progressbar"
|
22
23
|
spec.add_development_dependency "rake"
|
23
24
|
spec.add_runtime_dependency "mail"
|
24
25
|
spec.add_runtime_dependency "activemodel"
|
@@ -9,28 +9,38 @@ describe SpamEmailValidator do
|
|
9
9
|
|
10
10
|
shared_examples_for "Validating emails" do
|
11
11
|
before { I18n.locale = locale }
|
12
|
+
let(:invalid_domain) { "10minutemail.com" }
|
12
13
|
|
13
14
|
describe "#validate_each" do
|
14
15
|
subject { record_class.new }
|
15
16
|
before { subject.email = email }
|
16
17
|
before { subject.valid? }
|
17
18
|
|
18
|
-
context "email domain is listed in in blacklisted domains" do
|
19
|
-
let(:email) {
|
20
|
-
|
21
|
-
|
19
|
+
context "when email domain is listed in in blacklisted domains" do
|
20
|
+
let(:email) { "johndoe@#{invalid_domain}" }
|
21
|
+
|
22
|
+
it "should not be valid" do
|
23
|
+
subject.should_not be_valid
|
24
|
+
subject.errors[:email].should == errors
|
25
|
+
end
|
22
26
|
end
|
23
27
|
|
24
|
-
context "upcase provided email domain is listed in in blacklisted domains" do
|
25
|
-
let(:email) {
|
26
|
-
|
27
|
-
|
28
|
+
context "when upcase provided email domain is listed in in blacklisted domains" do
|
29
|
+
let(:email) { "johndoe@#{invalid_domain.upcase}" }
|
30
|
+
|
31
|
+
it "should not be valid" do
|
32
|
+
subject.should_not be_valid
|
33
|
+
subject.errors[:email].should == errors
|
34
|
+
end
|
28
35
|
end
|
29
36
|
|
30
|
-
context "email domain is not listed in in blacklisted domains" do
|
37
|
+
context "when email domain is not listed in in blacklisted domains" do
|
31
38
|
let(:email) { 'johndoe@lima-city.de' }
|
32
|
-
|
33
|
-
|
39
|
+
|
40
|
+
it "should be valid" do
|
41
|
+
subject.should be_valid
|
42
|
+
subject.errors[:email].should be_empty
|
43
|
+
end
|
34
44
|
end
|
35
45
|
end
|
36
46
|
end
|
@@ -54,4 +64,4 @@ describe SpamEmailValidator do
|
|
54
64
|
let!(:errors) { [ "est un fournisseur e-mail interdit" ] }
|
55
65
|
it_should_behave_like "Validating emails"
|
56
66
|
end
|
57
|
-
end
|
67
|
+
end
|