---
name: "nullmailer-dsn"
section: "1"
platform: "linux"
package: "nullmailer"
version: "2.2-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/nullmailer-dsn"
---

# nullmailer-dsn(1)

Reformat a queued message into a delivery status notification (DSN)

## NAME

nullmailer-dsn - Reformat a queued message into a delivery status notification (DSN)

## SYNOPSIS

**nullmailer-dsn** \[ **options** \] *status-code* \< *message*

## DESCRIPTION

This program reads a nullmailer queue message from standard input, transforms it into a delivery status notification, and writes the result to standard output. The output is formatted to be fed into **nullmailer-queue**.

All times in the options are expressed as seconds since midnight GMT January 1, 1970 (the UNIX epoch).

## OPTIONS

- **--diagnostic-code=***STRING*

  Sets the actual diagnostic code issued by the mail transport. Must be in the form of "*type*; *text*", where *type* would typically be the protocol name, such as **SMTP**. This adds a **Diagnostic-Code** header for each recipient.

- **--envelope-id=***STRING*

  Original envelope ID. Setting this adds a **Original-Envelope-Id** header to the delivery status section.

- **--last-attempt=***TIME*

  Sets the time of the last attempted delivery. Defaults to the access time of the input message. This sets the date in the **Last-Attempt-Date** header for each recipient.

- **--max-lines=***COUNT*

  Sets the maximum number of lines of the original message to copy into the generated message. A value of zero copies only the original header. Negative values copy the whole message. Defaults to *bouncelines* below, or zero if that is empty.

- **--orig-timestamp=***TIME*

  Sets the time of the original message. Defaults to the change time of the input message. This sets the date in the **Arrival-Date** header in the delivery status section.

- **--remote=***STRING*

  Sets the name of the remote MTA server. This adds a **Remote-MTA** header for each recipient.

- **--retry-until=***TIME*

  Sets the time of the (future) final delivery attempt. No default. This adds a **Will-Retry-Until** header for each recipient.

## RETURN VALUE

Exits 0 if it was successful, otherwise it prints a diagnostic message to standard error and exits 1.

## CONTROL FILES

- **adminaddr**

  If **doublebounceto** is empty, double bounces are delivered to this address instead. If no address is configured, double bounces are not generated.

- **bouncelines**

  Sets the maximum number of lines of the original message to copy. May be overridden by **--max-lines** as above.

- **bounceto**

  The address to which all bounces should be sent. If it is empty, the original sender address is used.

- **defaultdomain**

  The content of this file is appended to any host name that does not contain a period (except **localhost**), including *defaulthost* and *idhost*. Defaults to the value of the **me** control file, if it exists, otherwise the literal name **defaultdomain**.

- **defaulthost**

  The content of this file is appended to any address that is missing a host name. Defaults to the value of the *me* control file, if it exists, otherwise the literal name **defaulthost**.

- **doublebounceto**

  If the original sender was empty (the original message was a delivery status or disposition notification), the double bounce is sent to the address in this file.

- **idhost**

  The content of this file is used when building the message-id string for the message. Defaults to the canonicalized value of *defaulthost*.

- **me**

  The fully-qualified host name of the computer running nullmailer. Defaults to the literal name **me**.

## SEE ALSO

[nullmailer-queue(8)](/nullmailer-queue/8.md), [nullmailer-send(8)](/nullmailer-send/8.md)
