makemap(8) on Solnix vs Linux and the BSDs
On Solnix, makemap is the illumos (sendmail) makemap at /usr/sbin/makemap. It builds sendmail keyed-map databases (dbm, btree, hash) from standard input. FreeBSD ships a close sendmail-derived variant; OpenBSD's makemap is a different tool for smtpd with different options.
The manual pages
- Solnix: makemap(8) from
pkgs.solnix.illumos-world-man· illumos.org - FreeBSD: makemap(8) 15.1-RELEASE
- OpenBSD: makemap(8) 8.0
What Solnix runs
A default Solnix system runs the illumos makemap at /usr/sbin/makemap. No other variants are shipped. The page documents dbm, btree and hash map types only.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| OpenBSD | different program and mail system | Solnix makemap builds maps for sendmail(8). OpenBSD makemap builds maps for smtpd.conf(5). Sendmail-style invocations such as makemap hash name < file do not work on OpenBSD. Source: Solnix makemap(8) NAME, DESCRIPTION; OpenBSD makemap(8) NAME, SYNOPSIS |
| OpenBSD | command-line syntax | Solnix takes maptype and mapname operands and reads standard input. OpenBSD takes a single input file operand and has no maptype operand. Its database format is chosen with -d dbtype.Source: Solnix makemap(8) SYNOPSIS, OPERANDS; OpenBSD makemap(8) SYNOPSIS, -d |
| OpenBSD | output file name | OpenBSD writes to the input file name plus a .db suffix, unless -o dbfile is given. Solnix writes to the mapname operand as given. The Solnix page does not say whether it adds a suffix.Source: OpenBSD makemap(8) DESCRIPTION, -o; Solnix makemap(8) OPERANDS (mapname) |
| OpenBSD | -d meaning | On Solnix, -d allows duplicate keys and works only on B-Tree maps. On OpenBSD, -d dbtype takes an argument and selects hash or btree, with hash as the default.Source: Solnix makemap(8) -d; OpenBSD makemap(8) -d dbtype |
| OpenBSD | -o meaning | On Solnix, -o appends to an existing map file. On OpenBSD, -o dbfile takes an argument naming the output file.Source: Solnix makemap(8) -o; OpenBSD makemap(8) -o dbfile |
| OpenBSD | -t meaning | On Solnix, -t delim sets the field delimiter in place of whitespace. On OpenBSD, -t type selects the output map type, aliases or set.Source: Solnix makemap(8) -t; OpenBSD makemap(8) -t type |
| OpenBSD | dumping a map | Solnix dumps a map to standard output with -u, using the -t delimiter if given. OpenBSD uses -U and separates key and value with a tab.Source: Solnix makemap(8) -u; OpenBSD makemap(8) -U |
| OpenBSD | options missing on OpenBSD | OpenBSD has none of the Solnix options -C, -c, -D, -e, -f, -l, -N, -r, -s and -v. It also has no key case folding option. Its input may continue lines with a backslash and allows comments anywhere in a line.Source: OpenBSD makemap(8) SYNOPSIS and options; Solnix makemap(8) OPTIONS |
| FreeBSD | cdb and implicit map types | FreeBSD also supports cdb and implicit map types, plus -i type to name a fallback type. Solnix documents only dbm, btree and hash and has no -i.Source: FreeBSD makemap(8) DESCRIPTION, -i; Solnix makemap(8) OPERANDS |
| FreeBSD | file ownership and aliases | FreeBSD documents that, if TrustedUser is set and makemap runs as root, generated files are owned by that user. It also says to use newaliases, not makemap, for the aliases database. The Solnix page documents neither. Source: FreeBSD makemap(8) DESCRIPTION; Solnix makemap(8) -C |
| FreeBSD | -o and -t details | FreeBSD notes that -o may not be supported by every database type, such as cdb. Its -t also applies when dumping a map. Solnix -u documents the same use of the -t delimiter when dumping.Source: FreeBSD makemap(8) -o, -t; Solnix makemap(8) -u |
Standards
- POSIX: makemap is not a POSIX.1-2024 utility.
- FreeBSD: HISTORY: the makemap command appeared in 4.4BSD.
- OpenBSD: HISTORY: the makemap command first appeared in OpenBSD 4.6 as a replacement for the equivalent command shipped with sendmail.
Writing portable scripts
- Do not share makemap invocations between sendmail systems and OpenBSD: the operands and the meanings of
-d,-oand-tdiffer. Wrap them per platform. - On sendmail systems, check the supported map types with makemap
-lbefore choosing hash, btree, dbm or cdb.
Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.