zdns -- DNS zones creator helper This is very simple zsh-based helper functions to create DNS zones. Many things are hardcoded there. Basically you just write ordinary zsh script, sourcing the rc.zsh, containing various helper functions. It expects DOMAIN variable to be set. * fqdn(domain) -- prints fully-qualified domain name, taking either "domain.", or "@", or "subdomain" names * shortened(domain) -- prints $DOMAIN-relative shortened name, printing only subdomain parts or "@" * zone_start(serial) -- prints SOA record with two predefined (hardcoded) nameservers and none DMARC policy * add_mx(domain) -- add predefined MX records for given domain, with predefined redirect-based SPF policy * add_dane(domain) -- 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 * add_ssh(domain) -- searches for corresponding public key in ssh/ subdirectory and (if it exists) prints corresponding SSHFP record * add_subdomain(domain, addresses) -- adds specified domain with provided space-separated addresses. It automatically calls add_dane and add_ssh helpers. Unless $NOSPF=1 is specified, it prints "-all" SPF policy. If $Y=1 is specified, then it adds "y.domain" address with predefined $Y6 address and "-all" SPF policy * add_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.zsh, 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.zsh 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.zsh < 2019...15ac._openpgpkey TYPE61 \# 655 (...)