DMA(8)
π dma(8) β DragonFly Mail Agent, bestie edition π
okay so this is the dma(8) page, aka the DragonFly Mail Agent glow-up. if you're here for the tiny MTA with main character energy, you're in the right group chat π
πΈ NAME πΈ
dma β DragonFly Mail Agent. that's it, that's the name, periodt. π
β¨ SYNOPSIS β¨
dma [-DiOt] [-Amode] [-bmode] [-f sender] [-L tag] [-ooption]
[-r sender] [-q[arg]] [recipient ...]
π DESCRIPTION π
dma is a small Mail Transport Agent (MTA), and it's literally designed for home and office use. it accepts mails from locally installed Mail User Agents (MUA) and delivers those mails either locally or to a remote destination. remote delivery includes several features like TLS/SSL support and SMTP authentication β slay. β¨
heads up bestie:dmais not intended as a replacement for real, big MTAs likesendmail(8)orpostfix(1). consequently,dmadoes not listen on port 25 for incoming connections. not me being a tiny MTA and minding my own business π«Ά
The options are as follows:
-Amodeβ-Acacts as a compatibility option forsendmail. iykyk.-bmodeβ okay, mode moment:-bpβ list all mails currently stored in the mail queue.-bqβ queue the mail, but do not attempt to deliver it. see also theDEFERconfig file setting below.- all other modes are ignored.
-Dβ do not run in the background. useful for debugging. lowkey the βi want to see what's happeningβ button.-f senderβ set sender address (envelope-from) to sender. this overrides the value of theEMAILenvironment variable, but is overridden by theMASQUERADEconfig file setting. precedence drama, fr fr.-iβ ignore dots alone on lines by themselves in incoming messages. this should be set if you are reading data from a file.-L tagβ set the identifier used in syslog messages to the supplied tag. this is a compatibility option forsendmail.-Oβ this is a compatibility option forsendmail. that's the whole vibe.-ooptionβ specifying-oiis synonymous to-i. all other options are ignored.-q[arg]β process saved messages in the queue. the argument is optional and ignored.-r senderβ same as-f. twins.-tβ obtain recipient addresses from the message header.dmawill parse theTo:,Cc:, andBcc:headers. theBcc:header will be removed independent of whether-tis specified or not. iconic behavior tbh.
π CONFIGURATION π
dma can be configured with two config files:
auth.confdma.conf
these two files are stored per default in /etc/dma. yes bestie, that's the spot. π
π¦ FILE FORMAT π¦
every file contains parameters of the form name value. lines containing boolean values are set to NO if the line is commented and to YES if the line is uncommented. empty lines or lines beginning with a # are ignored. parameter names and their values are case sensitive β so don't try to be cute with the capitalization, it's giving strict. π
π· PARAMETERS π·
π auth.conf π
SMTP authentication can be configured in auth.conf. each line has the format user|smarthost:password. that's the whole little secret handshake. π
π dma.conf π
most of the behaviour of dma can be configured in dma.conf. this is the main-character config file, so let's go parameter by parameter:
SMARTHOST(string, default=empty) β if you want to send outgoing mails via a smarthost, set this variable to your smarthosts address.PORT(numeric, default=25) β use this port to deliver remote emails. only useful together with theSMARTHOSToption, becausedmawill deliver all mails to this port, regardless of whether a smarthost is set or not.ALIASES(string, default=/etc/aliases) β path to the local aliases file. just stick with the default. the aliases file is of the formatnam: dest1 dest2 .... in this case, mails to nam will instead be delivered to dest1 and dest2, which in turn could be entries in/etc/aliases. the special name*can be used to create a catch-all alias, which gets used if no other matching alias is found. use the catch-all alias only if you do not want any local mail to be delivered. choose wisely bestie. π«ΆSPOOLDIR(string, default=/var/spool/dma) β path todma's spool directory. just stick with the default.AUTHPATH(string, default=not set) β path to theauth.conffile.SECURETRANSFER(boolean, default=commented) β uncomment if you want TLS/SSL secured transfer. secure girlie behavior. π₯STARTTLS(boolean, default=commented) β uncomment if you want to use STARTTLS. only useful together withSECURETRANSFER.VERIFYCERT(boolean, default=commented) β verify the server certificate against the CA. only makes sense if you use a smarthost.FINGERPRINT(string, default=empty) β pin the server certificate by specifying its SHA256 fingerprint. only makes sense if you use a smarthost.OPPORTUNISTIC_TLS(boolean, default=commented) β uncomment if you want to allow the STARTTLS negotiation to fail. most useful whendmais used without a smarthost, delivering remote messages directly to the outside mail exchangers; in opportunistic TLS mode, the connection will be encrypted if the remote server supports STARTTLS, but an unencrypted delivery will still be made if the negotiation fails. only useful together withSECURETRANSFERandSTARTTLS.CERTFILE(string, default=empty) β path to your SSL certificate file.SECURE(boolean, default=commented) β uncomment this entry and change it toINSECUREto use plain text SMTP login over an insecure connection. you have to rename this variable manually to prevent that you send your password accidentally over an insecure connection. this one is the scary one, no cap. πDEFER(boolean, default=commented) β uncomment if you want thatdmadefers your mail. you have to flush your mail queue manually with the-qoption. this option is handy if you are behind a dialup line.FULLBOUNCE(boolean, default=commented) β uncomment if you want the bounce message to include the complete original message, not just the headers.MAILNAME(string, default=empty) β the internet hostnamedmauses to identify the host. if not set or empty, the result ofgethostname(3)is used. ifMAILNAMEis an absolute path to a file, the first line of this file will be used as the hostname.MASQUERADE(string, default=empty) β masquerade the envelope-from addresses with this address/hostname. use this setting if mails are not accepted by destination mail servers because your sender domain is invalid. this setting overrides the-fflag and theEMAILenvironment variable. ifMASQUERADEdoes not contain a@sign, the string is interpreted as a host name. for example, settingMASQUERADEtojohn@on hosthamletwill send all mails asjohn@hamlet; setting it topercolatorwill send all mails asusername@percolator. identity crisis but make it mail. πNULLCLIENT(boolean, default=commented) β bypass aliases and local delivery, and instead forward all mails to the definedSMARTHOST.NULLCLIENTrequiresSMARTHOSTto be set.
π Environment variables π
the behavior of dma can be influenced by some environment variables.
EMAILβ used to set the sender address (envelope-from). use a plain address, in the form ofuser@example.com. this value will be overridden when theMASQUERADEconfig file setting or the-fflag is used.
π₯ SEE ALSO π₯
mailaddr(7)mailwrapper(8)sendmail(8)- J. B. Postel, Simple Mail Transfer Protocol, RFC 821.
- J. Myers, SMTP Service Extension for Authentication, RFC 2554.
- P. Hoffman, SMTP Service Extension for Secure SMTP over TLS, RFC 2487.
β HISTORY β
the dma utility first appeared in DragonFly 1.11. a legend was born. β¨
π AUTHORS π
dma was written by Matthias Schmidt <matthias@dragonflybsd.org> and Simon Schubert <2@0x2c.org>. give them their flowers. π
mwah π β this page's footer says Debian, February 13, 2014, for DMA(8). bestie, you're all caught up π«Ά
π¦ where this page comes from
- alpine 3.24: dma-doc 0.14-r1 Β· BSD-3-Clause
- nixos 26.05: dma 0.14
- nixpkgs unstable: dma 0.14
- Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>
- Copyright (c) 2008 The DragonFly Project. All rights reserved
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms