Haraka TLD utilities
npm install haraka-tld
const tlds = require('haraka-tld');
if (tlds.get_organizational_domain('mail.example.com') === 'example.com') {
// do something
}
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 <-- hostmame
get_organizational_domain('mail.example.com'); // -> example.com
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: [email protected] would match [email protected]
}
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';
if (tlds.is_public_suffix('com')) {
// true
}
if (tlds.is_public_suffix('wikipedia.org')) {
// false
}
if (tlds.top_level_tlds['com']) {
// true
}
- 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
- 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.sh