haraka-tld v1.2.3
haraka-tld
Haraka TLD utilities
Installation
npm install haraka-tldUsage
const tlds = require('haraka-tld');
if (tlds.get_organizational_domain('mail.example.com') === 'example.com') {
// do something
}Functions exported
get_organizational_domain
Reduces a hostname to an Organizational Domain.
The O.D. is the portion of a domain name immediately delegated by a registrar and the portion that is no longer 'Public'
com <-- TLD (or Public Suffix)
example.com <-- Organizational Domain
mail.example.com <-- hostmameget_organizational_domain('mail.example.com'); // -> example.com
Haraka usage example:
const tlds = require('haraka-tld');
const from_dom = tlds.get_organizational_domain(connection.transaction.mail_from.host);
const to_dom = tlds.get_organizational_domain(connection.transaction.rcpt_to.host);
if (from_dom == to_dom) {
// the envelope sender domain matches the envelope receiver domain
// eg: root@mail.example.com would match sysadmin@example.com
}split_hostname
Split FQDN to host and domain
const split = tlds.split_hostname('host.sub1.sub2.domain.com');
// split[0] = 'host.sub1.sub2';
// split[1] = 'domain.com';is_public_suffix
if (tlds.is_public_suffix('com')) {
// true
}
if (tlds.is_public_suffix('wikipedia.org')) {
// false
}Directly access lists
Check for a TLD
if (tlds.top_level_tlds['com']) {
// true
}The following files are included
- public-suffix-list
A list of all Public Suffixes (the parts of a domain name exactly one level below the registrar). Includes punycoded international domains, is maintained by the Mozilla project, and accomplishes roughly the same task as the *-tlds files.
- top-level-tlds
The list of TLDs valid on the internet. Update URL
- two-level-tlds
A list of 2nd level TLDs. Update URL
- three-level-tlds
A list of 3rd level TLDs. Update URL
- extra-tlds
This allows for additional 2nd and 3rd level TLDs from a single file. Used for site customizations or for the URIBL hosters.txt. Update URL
Updating
- update the TLD files with
./update_tld_files - use the .release scripts to roll a new release. If the .release dir is empty (first time), populate it with
git submodule update --init --recursive.
.release/start.sh patch
$edit CHANGELOG.md
git add . && git commit
.release/submit.sh1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago