Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
DKIMPROXY.OUT(1)       User Contributed Perl Documentation	DKIMPROXY.OUT(1)

NAME
     dkimproxy.out - SMTP proxy for adding DKIM signatures to email

SYNOPSIS
       dkimproxy.out [options] --keyfile=FILENAME --selector=SELECTOR \
		      --domain=DOMAIN LISTENADDR:PORT RELAYADDR:PORT
	 smtp options:
	   --conf_file=FILENAME
	   --listen=LISTENADDR:PORT
	   --relay=RELAYADDR:PORT
	   --reject-error

	 signing options:
	   --signature=dkim|domainkeys
	   --keyfile=FILENAME
	   --selector=SELECTOR
	   --method=simple|relaxed|nofws
	   --domain=DOMAIN
	   --identity=IDENTITY

	 daemon options:
	   --daemonize
	   --user=USER
	   --group=GROUP
	   --pidfile=PIDFILE

       dkimproxy.out --help
	 to see a full description of the various options

DESCRIPTION
     This is the "outbound" part of DKIMproxy, used for adding DKIM/DomainKey
     signatures to "outbound" email messages. This program listens on a particu-
     lar TCP port (specified by the "listen" option), and sends the traffic it
     receives on to a destination TCP address/port (specified by the "relay" op-
     tion), with messages getting modified to have a DKIM and/or DomainKeys sig-
     nature added.

     DKIMproxy offers a number of options that determine how it generates signa-
     tures for the messages it processes. It can also vary its behavior accord-
     ing to the sender of the message it is processing. Read about the "sender
     map file" if you want to vary behavior according to sender.

OPTIONS
     --daemonize
	 If specified, the server will run in the background.

     --domain=DOMAIN
	 This argument serves two purposes. First, it selects which messages (of
	 all those DKIMproxy sees) that should be signed. Second, it specifies
	 what d= value to put in the generated signatures.

	 You can specify multiple domains by separating them with commas.  If
	 only one domain is specified, DKIMproxy will sign ALL messages, and it
	 will use the specified domain as the d= value of all generated signa-
	 tures.

	 If two or more domains are specified, DKIMproxy will only sign messages
	 which have a sender matching one of these domains. It will use the
	 matched domain as the d= value of the generated signature.

	 Please note that the d= value of the generated signature can also be
	 specified using signature options (see "SIGNATURE OPTIONS"). The signa-
	 ture options will override the value specified here.

	 Therefore, if you want to sign all messages, and you are specifying a
	 d= value as part of the "signature" argument, or within a sender map
	 file or list-id map file, you can omit the "domain" argument.

     --group=GROUP
	 If specified, the daemonized process will setgid() to the specified
	 GROUP.

     --identity=IDENTITY
	 If specified, any DKIM signature created will have an i= argument con-
	 taining the value specified.

     --keyfile=FILENAME
	 This is a required argument. Use it to specify the filename containing
	 the private key used in signing outgoing messages. For messages to ver-
	 ify, you will need to publish the corresponding public key in DNS, us-
	 ing the selector name specified by "--selector", under the domain(s)
	 specified in "--domain".

     --listid_map=FILENAME
	 If specified, the named file provides signature parameters depending on
	 the "List-Id" header found in the message. Use this if your mail server
	 sends out mailing list messages and you want to generate different sig-
	 natures depending on which mailing list is sending messages. See the
	 section below titled "LIST-ID MAP FILE".

     --method=simple|relaxed|nofws
	 This option specifies the canonicalization algorithm to use for signing
	 messages. For DKIM signatures, the options are "simple", "relaxed", and
	 "relaxed/relaxed"; the default is "relaxed". For DomainKeys signatures,
	 the options are "simple" and "nofws"; the default is "nofws".

     --pidfile=PIDFILE
	 Creates a PID file (a file containing the PID of the process) for the
	 daemonized process. This makes it possible to check the status of the
	 process, and to cleanly shut it down.

     --reject-error
	 This option specifies what to do if an error occurs during signing of a
	 message. If this option is specified, the message will be rejected with
	 an SMTP error code. This will result in the MTA sending the message to
	 try again later, or bounce it back to the sender (depending on the ex-
	 act error code used). If this option is not specified, the message will
	 be allowed to pass through without having a signature added.

	 The most common cause of an error when signing a message is if the sig-
	 nature options are improperly configured.

     --selector=SELECTOR
	 This is a required argument. Use it to specify the name of the key se-
	 lector.

     --sender_map=FILENAME
	 If specified, the named file provides signature parameters depending on
	 what sender is found in the message. See the section below titled
	 "SENDER MAP FILE".

     --signature=dkim|domainkeys
	 This specifies what type of signature to add. Use "dkim" to sign with
	 IETF-standardized DKIM signatures. Use "domainkeys" to sign with the
	 older, but more common, Yahoo! DomainKeys signatures.	The default is
	 "dkim".

	 This parameter can be specified more than once to add more than one
	 signature to the message. In addition, per-signature parameters can be
	 specified by enclosing the comma-separated options in parenthesis after
	 the signature type, e.g.

	   --signature=dkim(c=relaxed,key=/path/to/private.key)

	 The syntax for specifying per-signature options is described in more
	 detail in the section below titled "SIGNATURE OPTIONS".

     --user=USER
	 If specified, the daemonized process will setuid() to USER after com-
	 pleting any necessary privileged operations, but before accepting con-
	 nections.

EXAMPLE
     For example, if dkimproxy.out is started with:

       dkimproxy.out --keyfile=private.key --selector=postfix \
	       --domain=example.org 127.0.0.1:10027 127.0.0.1:10028

     the proxy will listen on port 10027 and send the signed messages to some
     other SMTP service on port 10028.

CONFIGURATION FILE
     Parameters can be stored in a separate file instead of specifying them all
     on the command-line. Use the "conf_file" option to specify the path to the
     configuration file, e.g.

       dkimproxy.out --conf_file=/etc/dkimproxy_out.conf

     The format of the configuration file is one option per line: name of the
     option, space, then the value of the option. E.g.

       # this is an example config file
       domain example.org,example.com
       keyfile private.key
       selector postfix
       signature dkim

     is equivalent to

       dkimproxy.out --domain=example.org,example.com --keyfile=private.key \
		     --selector=postfix --signature=dkim

SIGNATURE OPTIONS
     When specifying a signature type, you may optionally specify per-signature
     options within parenthesis after the signature type.  E.g. if you say

       dkim(d=example.com,c=relaxed,a=rsa-sha1)

     Then DKIMproxy will add a "DKIM" signature with domain "example.com", using
     the "relaxed" canonicalization method, and the "rsa-sha1" algorithm.

     The following signature options are recognized:

     key the private key file to use.  You must specify the full path to the
	 private key file.

     a, algorithm
	 the algorithm to use

     c, method
	 the canonicalization method to use

     d, domain
	 the domain to use, default is to use whichever domain was matched (i.e.
	 one of the domains specified in the --domain argument, or the domain
	 found in the sender map file.)

	 You may also use macros for this parameter, such as $senderdomain.  See
	 the section on "MACROS" for more information.

     i, identity
	 the identity to use, default is to not include an i= parameter.

	 You may also use macros for this parameter, such as $sender.  See the
	 section on "MACROS" for more information.

     s, selector
	 the selector to use

MACROS
     When specifying signature options, specifically the "domain" and "identity"
     options, you may want to substitute values from the message being signed.
     The following macros are available:

     $sender
	 Substitutes the sender's email address (as found in the Sender or From
	 header).

     $senderdomain
	 Substitutes the domain part of the sender's email address.

SENDER MAP FILE
     If you want to use different signature properties depending on the sender
     of the message being signed, use a "sender map file". This is a lookup file
     containing sender email addresses on the left and signature properties on
     the right. E.g.

       # sign my mail with a EXAMPLE.COM dkim signature
       jason@long.name	dkim(d=example.com)

       # sign WIDGET.EXAMPLE mail with a default domainkeys signature
       widget.example	domainkeys

       # sign EXAMPLE.ORG mail with both a domainkeys and dkim signature
       example.org	dkim(c=relaxed,a=rsa-sha256), domainkeys(c=nofws)

     Right-hand values in a sender map file is a comma-separated list of signa-
     ture types. Each signature type may have a comma-separated list of parame-
     ters enclosed in parenthesis. See "SIGNATURE OPTIONS" for more information
     about the recognized parameters.

     Please note that DKIMproxy tries hard to match a given message to an entry
     in the sender map file. If the full domain of the message's sender is not
     in the file, it tries each parent domain of the message's sender until a
     match is found.  E.g. if the sender map file contains the following con-
     tents:

       a.my.example	dkim(key=key1)
       my.example	dkim(key=key2)

     Then a message from user1@a.my.example will be signed with key key1.  A
     message from user2@b.my.example will be signed with key2.	A message from
     user3@your.example will not be signed.

LIST-ID MAP FILE
     This works very much like a sender map file, except it selects based on the
     "List-Id" header rather than the "Sender" or "From" header.  You can match
     on the full list-id value, or just a suffix.  Here is an example file:

       kernel.org		    dkim(d=kernel.org)
       xorg-devel.lists.x.org	    dkim(d=lists.x.org)
       dev.spamassassin.apache.org  dkim(d=apache.org)

     The syntax of the right-hand values is the same as a sender map file, i.e.
     a comma-separated list of signatures to add to the message.  For more de-
     tails, see "SIGNATURE OPTIONS" above.

     If no "List-Id" header is found in the message to be signed, or no entry in
     the map file matches the found "List-Id" header, then DKIMproxy will pro-
     ceed as if no listid_map option was specified.  That is, it will add the
     default signature (if a "domain" or "signature" option was specified), or
     leave the message as is.

AUTHOR
     Jason Long

perl v5.42.3			   2026-08-30			DKIMPROXY.OUT(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=dkimproxy_out&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help