zdns -- DNS zones creator helper This is very simple Tcl-based helper functions to create DNS zones. Many things are hardcoded there. Basically you just write ordinary Tcl script, sourcing the rc.tcl, containing various helper functions. It expects DOMAIN variable to be set. Initially that utility was written on zsh, but later it was replaced with Tcl. * fqdn(domain) -- prints fully-qualified domain name, taking either "domain.", or "@", or "subdomain" names * shorten(domain) -- prints $DOMAIN-relative shortened name, printing only subdomain parts or "@" * zone(serial) -- prints SOA record with two predefined (hardcoded) nameservers and none DMARC policy * mx(domain) -- add predefined MX records for given domain, with predefined redirect-based SPF policy * dane(domain, [port=443]) -- add DANE records for given domain. You have to have tls/ subdirectory, containing zeasypki's state (http://www.git.stargrave.org/?p=zeasypki.git;a=blob;f=README) It looks in each CA's subdirectory if keypair exists for the domain, printing necessary CAA and TLSA records * ssh(domain) -- searches for corresponding public key in ssh/ subdirectory and (if it exists) prints corresponding SSHFP record * subdomain(domain, addrs, [y mailable dane:PORT]) -- adds specified domain with provided space-separated addresses. It automatically calls dane and ssh helpers. Third argument is a list containing three optional elements. Unless "mailable" is specified, it prints "-all" SPF policy and sets null MX. If "y" is specified, it adds "y.domain" address with predefined $Y6 address with "-all" SPF policy and null MX * pgp(keyid, uid) -- prints _openpgpkey DANE record for given OpenPGP key of desired UID. "uid" is optional and useful only if your key have got multiple UIDs and you need to add only the single specified one To omit burden of sourcing rc.tcl, setting $DOMAIN and rebuilding zones after its change, there is default.zone.do redo (http://cr.yp.to/redo.html) target, expecting your script in $domain.tcl file. For example the zone for nncpgo.org domain with mail-capabilities, WWW subdomain (available via Yggdrasil network), OpenPGP DANE key, openpgp-subdomain for WKD and necessary DANE/SSH records could be created the following way: $ ln -fs /path/to/zeasypki/state tls $ [[ -d tls/ee/ecdsa/ca.cypherpunks.ru/openpgpkey.nncpgo.org ]] $ [[ -d tls/ee/gost/cagost.cypherpunks.ru/openpgpkey.nncpgo.org ]] $ [[ -d tls/ee/ecdsa/ca.cypherpunks.ru/www.nncpgo.org ]] $ [[ -d tls/ee/gost/cagost.cypherpunks.ru/www.nncpgo.org ]] $ mkdir -p ssh $ print ssh-ed25519 AAAA... > ssh/www.nncpgo.org $ cat > nncpgo.org.tcl < 2019...15ac._openpgpkey TYPE61 \# 655 (...)