disposable-email-domains/README.md

68 lines
2.7 KiB
Markdown
Raw Normal View History

2014-11-17 17:44:38 +01:00
List of disposable email domains
2014-09-02 22:31:28 +02:00
========================
2014-09-02 22:39:12 +02:00
[![Licensed under CC0](https://licensebuttons.net/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/)
2016-07-27 18:31:43 +02:00
2015-08-19 22:21:20 +02:00
This repo contains a [list of disposable and temporary email address domains](disposable_email_blacklist.conf) often used to register dummy users in order to spam/abuse some services.
2014-09-02 23:20:58 +02:00
2015-03-05 23:50:15 +01:00
Originally collected to filter new user registration at https://usegalaxy.org and later merged with other lists found online. I cannot guarantee all of these can still be considered disposable but they probably were at one point in time.
2014-09-02 22:39:12 +02:00
2015-08-19 22:11:34 +02:00
Whitelist
=========
2015-08-19 22:13:21 +02:00
The file [whitelist.conf](whitelist.conf) gathers email domains that are often identified as disposable but in fact are not.
2015-08-19 22:11:34 +02:00
2015-06-24 17:01:26 +02:00
Example Usage
=============
2016-11-29 19:19:06 +01:00
**Python**
2015-06-24 17:12:54 +02:00
```Python
blacklist = ('disposable_email_blacklist.conf')
blacklist_content = [line.rstrip() for line in blacklist.readlines()]
if email.split('@')[1] in blacklist_content:
message = "Please enter your permanent email address."
return (False, message)
else:
return True
```
2016-11-29 19:19:06 +01:00
**PHP** contributed by @txt3rob and @deguif
2015-06-24 17:01:26 +02:00
```php
function is_temp_mail($mail) {
2016-06-17 16:22:04 +02:00
$mail_domains_ko = file('disposable_email_blacklist.conf', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
2016-06-17 16:41:01 +02:00
//Need to ensure the mail contains an @ to avoid undefined offset
return in_array(explode('@', $mail)[1], $mail_domains_ko);
2015-06-24 17:01:26 +02:00
}
```
2016-11-29 19:19:06 +01:00
**Ruby on Rails** contributed by @MitsunChieh
In resource model, usually it is `user.rb`
```Ruby
before_validation :reject_email_blacklist
def reject_email_blacklist
blacklist = File.read('config/disposable_email_blacklist.conf').split("\n")
if blacklist.include?(email.split('@')[1])
   errors[:email] << 'invalid email'
return false
else
return true
end
end
```
2015-06-24 17:01:26 +02:00
2014-11-17 17:44:38 +01:00
Contributing
============
2014-11-17 17:46:07 +01:00
Feel free to create PR with additions or request removal of some domain (with reasons).
2014-09-17 06:16:45 +02:00
Use
2015-08-19 22:07:27 +02:00
`$ cat disposable_email_blacklist.conf your_file | tr '[:upper:]' '[:lower:]' | sort -f | uniq -i > new_file.conf`
`$ comm -23 new_file.conf whitelist.conf > disposable_email_blacklist.conf`
2014-09-17 06:16:45 +02:00
to add contents of another file in the same format (only second level domains on new line without @). It also converts uppercase to lowercase, sorts, removes duplicates and removes whitelisted domains.
Changelog
============
7/27/16 - Converted all domains to the second level. This means that starting from [this commit](https://github.com/martenson/disposable-email-domains/commit/61ae67aacdab0b19098de2e13069d7c35b74017a) the implementers should take care of matching the second level domain names properly i.e. `@xxx.yyy.zzz` should match `yyy.zzz` in blacklist more info in [#46](https://github.com/martenson/disposable-email-domains/issues/46)