Postfix/sendmail

Aus Foxwiki

sendmail - Schnittstelle für die Kompatibilität zwischen Postfix und Sendmail

Beschreibung

Der Postfix-Befehl sendmail(1) implementiert die Postfix-Sendmail-Kompatibilitätsschnittstelle.

  • Aus Gründen der Kompatibilität mit bestehenden Anwendungen werden einige Sendmail-Befehlszeilenoptionen erkannt, aber stillschweigend ignoriert.
  • Standardmäßig liest Postfix sendmail(1) eine Nachricht von der Standardeingabe bis EOF oder bis es eine Zeile mit nur einem Zeichen
  • Postfix sendmail(1) verlässt sich auf den Befehl postdrop(1), um eine Warteschlangendatei im maildrop-Verzeichnis zu erstellen.

Für andere gängige Betriebsarten sind spezielle Befehlsalias vorgesehen:

mailq
  • Listet die Mail-Warteschlange auf. Jeder Eintrag zeigt die ID der Warteschlangendatei, die Größe der Nachricht, die Ankunftszeit, den Absender und die Empfänger, die noch beliefert werden müssen.
  • Wenn eine Nachricht beim letzten Versuch nicht zugestellt werden konnte, wird der Grund für den Fehler angezeigt. Auf die Warteschlangen-ID folgt ein optionales

Statuszeichen:

* Die Nachricht befindet sich in der aktiven Warteschlange, d. h. die Nachricht ist zur Zustellung ausgewählt.
! Die Nachricht befindet sich in der Warteschlange "Hold", d. h. es wird kein weiterer Zustellversuch unternommen, bis die Nachricht aus der Warteschlange genommen wird.
# Die Nachricht wird zum Verfall gezwungen. Siehe die postsuper(1)-Optionen -e oder -f.

Diese Betriebsart wird durch die Ausführung des Befehls postqueue(1) implementiert.

newaliases
  • Initialisiert die Alias-Datenbank.
  • Wenn keine Eingabedatei angegeben wird (mit der Option -oA, siehe unten), verarbeitet das Programm die Datei(en), die mit dem Konfigurationsparameter alias_database angegebene Datei(en).
  • Wenn kein Alias-Datenbanktyp angegeben ist, verwendet das Programm den Typ, der mit dem Parameter default_database_type angegebenen Typ.
  • Diese Betriebsart wird durch die Ausführung des Befehls postalias(1) implementiert.
'Hinweis
Es kann etwa eine Minute dauern, bis eine Aktualisierung der Alias-Datenbank sichtbar wird. Verwenden Sie den Befehl "postfix reload", um diese Verzögerung zu vermeiden.

Diese und andere Funktionen können durch die Angabe der entsprechenden Kombination von Befehlszeilenoptionen ausgewählt werden. Einige Funktionen werden durch Parametern in der Konfigurationsdatei main.cf gesteuert.

Installation

# type sendmail
sendmail is /usr/sbin/sendmail
# whereis sendmail
sendmail: /usr/sbin/sendmail /usr/lib/sendmail /usr/share/man/man1/sendmail.1.gz

Syntax

sendmail [option ...] [recipient ...]
mailq
sendmail -bp
neualiases
sendmail -I

Parameter

Optionen

Option Beschreibung
-Am (ignoriert)
-Ac (ignoriert) Postfix sendmail verwendet dieselbe Konfigurationsdatei, unabhängig davon, ob es sich bei einer Nachricht um eine Erstübermittlung handelt oder nicht.
-B body_type Der MIME-Typ des Nachrichtentextes: 7BIT oder 8BITMIME.
-bd Wechselt in den Daemon-Modus. Diese Betriebsart wird durch das Ausführen des Befehls "postfix start" implementiert.
-bh (ignoriert)
-bH (ignoriert) Postfix hat keine persistente Host-Status-Datenbank.
-bi Initialisiert die Alias-Datenbank. Siehe den Befehl newaliases
-bl Wechselt in den Daemon-Modus. Um nur lokale Verbindungen wie bei der Option -bl von Sendmail zu akzeptieren, geben Sie "inet_interfaces = loopback" in der Postfix main.cf Konfigurationsdatei an.
-bm Liest E-Mails von der Standardeingabe und sorgt für die Zustellung. Dies ist die Standardbetriebsart.
-bp Listet die Mail-Warteschlange auf. Siehe den Befehl mailq oben.
-bs Eigenständiger SMTP-Server-Modus. Liest SMTP-Befehle von der Standardeingabe und schreibt Antworten auf die Standardausgabe. Im Standalone-SMTP-Server-Modus Modus sind das Mail-Relaying und andere Zugriffskontrollen standardmäßig deaktiviert. Um sie zu aktivieren, führen Sie den Prozess als Benutzer mail_owner aus. Diese Betriebsart wird durch die Ausführung des smtpd(8)-Daemons implementiert.
-bv Eine Nachricht nicht abholen oder zustellen. Stattdessen wird ein E-Mail-Bericht gesendet, nachdem jede Empfängeradresse überprüft wurde. Dies ist nützlich zum Testen von Adress Umschreiben von Adressen und Routing-Konfigurationen. Diese Funktion ist in Postfix Version 2.1 und höher verfügbar.
-C config_file
-C config_dir Der Pfadname der Postfix-Datei main.cf bzw. ihres übergeordneten Verzeichnisses. Diese Angabe wird bei Postfix-Versionen vor 2.3 ignoriert. Ab der Postfix-Version 3.2 muss in der Standarddatei main.cf ein anderes Verzeichnis als das Standardverzeichnis zugelassen werden, und zwar über die Optionen alternate_config_directories oder multi_instance_directories zugelassen werden. Bei allen Postfix-Versionen können Sie mit der Umgebungsvariablen MAIL_CONFIG einen Verzeichnispfad angeben, um den Speicherort der Konfigurationsdateien zu überschreiben. rationsdateien zu überschreiben.
-F voller_name Legt den vollständigen Namen des Absenders fest. Diese Option hat Vorrang vor der Umgebungsvariablen NAME und wird nur bei Nachrichten verwendet, die keine From: Kopfzeile haben.
-f Absender Legt die Absenderadresse für den Umschlag fest. Dies ist die Adresse, an die Zustellungsprobleme gesendet werden. Bei Postfix-Versionen vor 2.1 hat der Header Errors-To: Nachrichtenkopf die Fehler-Rücksendeadresse außer Kraft. G Gateway- (Relay-) Übermittlung, im Gegensatz zur ursprünglichen Benutzerübermittlung. Entweder werden Adressen überhaupt nicht umgeschrieben oder unvollständige Adressen werden mit den Domäneninformationen, die mit remote_header_rewrite_domain angegeben wurden. Diese Option wird vor Postfix Version 2.3 ignoriert.
-h hop_count (ignoriert) Hopcount-Grenze. Verwenden Sie stattdessen den Konfigurationsparameter hopcount_limit.
-I Initialisierung der Alias-Datenbank. Siehe den Befehl newaliases oben.
-i Wenn eine Nachricht von der Standardeingabe gelesen wird, wird eine Zeile mit nur einem . nicht als Ende der Eingabe behandelt.
-L label (ignoriert) Das Label für die Protokollierung. Verwenden Sie stattdessen den Konfigurationsparameter syslog_name.
-m (ignoriert) Rückwärtskompatibilität.
-N dsn (Voreinstellung: 'delay, failure') Steuerung der Benachrichtigung über den Lieferstatus. Geben Sie entweder eine durch Komma getrennte Liste mit einer oder mehreren der Optionen failure (Benachrichtigung bei fehlgeschlagener Zustellung) (Benachrichtigung bei fehlgeschlagener Zustellung senden), delay (Benachrichtigung bei verzögerter Zustellung senden) oder success (Benachrichtigung bei erfolgter Zustellung senden); oder geben Sie never (überhaupt keine Benachrichtigungen senden). Diese Funktion ist in Postfix 2.3 und höher verfügbar.
-n (ignoriert) Rückwärtskompatibilität.
-oAalias_datenbank Nicht-standardmäßige Alias-Datenbank. Geben Sie den Pfadnamen oder type:pathname an. Siehe postalias(1) für Details.
-O option=value (ignoriert) Setzt die genannte Option auf den Wert. Verwenden Sie stattdessen den entsprechenden Konfigurationsparameter in main.cf.
-o7 (ignoriert)
-o8 (ignoriert) Um 8-Bit- oder binäre Inhalte zu senden, verwenden Sie eine geeignete MIME-Kapselung und geben Sie die entsprechende Befehlszeilenoption -B an.
-oi Beim Lesen einer Nachricht von der Standardeingabe wird eine Zeile, die nur ein .-Zeichen enthält, nicht als das Ende der Eingabe behandelt.
-om (ignoriert) Der Absender wird bei Erweiterungen von Aliasen usw. nie eliminiert.
-o x Wert (ignoriert) Setzt die Option x auf Wert. Verwenden Sie stattdessen den entsprechenden Konfigurationsparameter in main.cf.
-r Absender Legt die Absenderadresse des Umschlags fest. Dies ist die Adresse, an die Zustellungsprobleme gesendet werden. Bei Postfix-Versionen vor 2.1 hat der Errors-To: Nachrichtenkopf die Fehler-Rücksendeadresse außer Kraft.
-R Rückgabe Steuerung der Benachrichtigung über den Zustellungsstatus. Geben Sie "hdrs" an, um nur den Header zurückzugeben, wenn eine Nachricht nicht zugestellt werden kann, "full", um eine vollständige Kopie zurückzugeben (das de-Fehlerverhalten). Die Option -R gibt eine Obergrenze an; Postfix gibt nur den Header zurück, wenn eine vollständige Kopie die Einstellung bounce_size_limit überschreiten würde. Diese Option wird vor Postfix Version 2.10 ignoriert.
-q Versucht, alle in der Warteschlange befindlichen Mails zuzustellen. Dies wird durch das Ausführen des Befehls postqueue(1) erreicht. Warnung: Wenn Sie häufig unzustellbare Mails in die Warteschlange stellen, führt dies zu einer schlechten Zustellungsleistung für alle anderen Mails.
-qinterval (ignoriert) Das Intervall zwischen den Warteschlangenläufen. Verwenden Sie stattdessen den Konfigurationsparameter queue_run_delay.
-qIqueueid Planen Sie die sofortige Zustellung von Nachrichten mit der angegebenen Warteschlangen-ID. Diese Option wird durch die Ausführung des Befehls postqueue(1) implementiert und ist ist ab Postfix Version 2.4 verfügbar.
-qRsite Plant die sofortige Zustellung aller Mails, die für die angegebene Site in der Warteschlange stehen. Diese Option akzeptiert nur Site-Namen, die für den "fast flush"-Dienst berechtigt sind, und wird durch die Ausführung des Befehls postqueue(1) implementiert. Siehe flush(8) für weitere Informationen über den "fast flush"-Dienst.
-qSite Dieser Befehl ist nicht implementiert. Verwenden Sie stattdessen den langsameren Befehl "sendmail -q".
-t Extrahiert Empfänger aus den Kopfzeilen von Nachrichten. Diese werden zu den in der Befehlszeile angegebenen Empfängern hinzugefügt. Bei Postfix-Versionen vor 2.1 setzt diese Option voraus, dass keine Empfängeradressen in der Befehlszeile angegeben werden.
-U (ignoriert) Initiale Benutzerübermittlung.
-V envid Geben Sie die Umschlag-ID für die Benachrichtigung durch Server an, die DSN unterstützen. Diese Funktion ist in Postfix 2.3 und höher verfügbar.
-XV (Postfix 2.2 und früher: -V) Variabler Umschlag-Rücksendepfad. Bei einer Absenderadresse des Umschlags in der Form owner-listname@origin erhält jeder Empfänger user@domain mit einer personalisierten Umschlagabsenderadresse. Standardmäßig lautet die personalisierte Umschlagabsenderadresse owner-listname+user=domain@origin. Die Standardzeichen + und = sind konfigurierbar mit dem Konfigurationsparameter default_verp_delimiters.
-XVxy (Postfix 2.2 und früher: -Vxy) Wie -XV, verwendet jedoch x und y als VERP-Begrenzungszeichen anstelle der Zeichen, die mit dem Konfigurationsparameter default_verp_delimiters Parameter angegeben wurden.
-v Sendet einen E-Mail-Bericht über den ersten Zustellungsversuch (Postfix-Versionen 2.1 und höher). Die Zustellung von E-Mails erfolgt immer im Hintergrund. Wenn mehrere Wenn mehrere -v-Optionen angegeben werden, wird die ausführliche Protokollierung zu Debugging-Zwecken aktiviert.
-X log_file (ignoriert) Protokolliert den Mailer-Verkehr. Verwenden Sie stattdessen die Konfigurationsparameter debug_peer_list und debug_peer_level.

Umgebung

Rückgabewert

Konfiguration

Dateien

  1. /var/spool/postfix
  2. mail queue
  3. /etc/postfix
  4. configuration files

Anwendung

Sicherheit

By design, this program is not set-user (or group) id. It is prepared to handle message content from untrusted, possibly remote, users.

However, like most Postfix programs, this program does not enforce a security policy on its command-line arguments. Instead, it relies on the UNIX system to enforce access policies based on the effective user and group IDs of the process. Concretely, this means that running Postfix commands as root (from sudo or equivalent) on behalf of a non-root user is likely to create privilege escalation opportunities.

If an application runs any Postfix programs on behalf of users that do not have normal shell access to Postfix commands, then that application MUST restrict user-specified command-line arguments to avoid privilege escalation.

• Filter all command-line arguments, for example arguments that contain a pathname or that specify a database access method. These pathname checks must reject user-controlled symlinks or hardlinks to sensitive files, and must not be vulnerable to TOCTOU race attacks.

• Disable command options processing for all command arguments that contain user-specified data. For example, the Postfix sendmail(1) command line MUST be structured as follows:

/path/to/sendmail system-arguments -- user-arguments

Here, the "--" disables command option processing for all user-arguments that follow.

Without the "--", a malicious user could enable Postfix sendmail(1) command options, by specifying an email address that starts with "-".

Dokumentation

RFC

Man-Page

Info-Pages

Siehe auch

Links

Projekt

Weblinks

TMP

DIAGNOSTICS

Problems are logged to syslogd(8) or postlogd(8), and to the standard error stream.

ENVIRONMENT

MAIL_CONFIG Directory with Postfix configuration files.

MAIL_VERBOSE (value does not matter) Enable verbose logging for debugging purposes.

MAIL_DEBUG (value does not matter) Enable debugging with an external command, as specified with the debugger_command configuration parameter.

NAME The sender full name. This is used only with messages that have no From: message header. See also the -F option above.

CONFIGURATION PARAMETERS The following main.cf parameters are especially relevant to this program. The text below provides only a parameter summary. See postconf(5) for more details including examples.

COMPATIBILITY CONTROLS Available with Postfix 2.9 and later:

sendmail_fix_line_endings (always) Controls how the Postfix sendmail command converts email message line endings from <CR><LF> into UNIX format (<LF>).

TROUBLE SHOOTING CONTROLS The DEBUG_README file gives examples of how to troubleshoot a Postfix system.

debugger_command (empty) The external command to execute when a Postfix daemon program is invoked with the -D option.

debug_peer_level (2) The increment in verbose logging level when a nexthop destination, remote client or server name or network address matches a pattern given with the debug_peer_list parameter.

debug_peer_list (empty) Optional list of nexthop destination, remote client or server name or network address patterns that, if matched, cause the verbose logging level to increase by the amount specified in $debug_peer_level.

ACCESS CONTROLS Available in Postfix version 2.2 and later:

authorized_flush_users (static:anyone) List of users who are authorized to flush the queue.

authorized_mailq_users (static:anyone) List of users who are authorized to view the queue.

authorized_submit_users (static:anyone) List of users who are authorized to submit mail with the sendmail(1) command (and with the privileged postdrop(1) helper command).

RESOURCE AND RATE CONTROLS

bounce_size_limit (50000) The maximal amount of original message text that is sent in a non-delivery notification.

fork_attempts (5) The maximal number of attempts to fork() a child process.

fork_delay (1s) The delay between attempts to fork() a child process.

hopcount_limit (50) The maximal number of Received: message headers that is allowed in the primary message headers.

queue_run_delay (300s) The time between deferred queue scans by the queue manager; prior to Postfix 2.4 the default value was 1000s.

FAST FLUSH CONTROLS The ETRN_README file describes configuration and operation details for the Postfix "fast flush" service.

fast_flush_domains ($relay_domains) Optional list of destinations that are eligible for per-destination logfiles with mail that is queued to those destinations.

VERP CONTROLS The VERP_README file describes configuration and operation details of Postfix support for variable envelope return path addresses.

default_verp_delimiters (+=) The two default VERP delimiter characters.

verp_delimiter_filter (-=+) The characters Postfix accepts as VERP delimiter characters on the Postfix sendmail(1) command line and in SMTP commands.

MISCELLANEOUS CONTROLS

alias_database (see 'postconf -d' output) The alias databases for local(8) delivery that are updated with "newaliases" or with "sendmail -bi".

command_directory (see 'postconf -d' output) The location of all postfix administrative commands.

config_directory (see 'postconf -d' output) The default location of the Postfix main.cf and master.cf configuration files.

daemon_directory (see 'postconf -d' output) The directory with Postfix support programs and daemon programs.

default_database_type (see 'postconf -d' output) The default database type for use in newaliases(1), postalias(1) and postmap(1) commands.

delay_warning_time (0h) The time after which the sender receives a copy of the message headers of mail that is still queued.

import_environment (see 'postconf -d' output) The list of environment parameters that a privileged Postfix process will import from a non-Postfix parent process, or name=value environment overrides.

mail_owner (postfix) The UNIX system account that owns the Postfix queue and most Postfix daemon processes.

queue_directory (see 'postconf -d' output) The location of the Postfix top-level queue directory.

remote_header_rewrite_domain (empty) Don't rewrite message headers from remote clients at all when this parameter is empty; otherwise, rewrite message headers and append the spec‐ ified domain name to incomplete addresses.

syslog_facility (mail) The syslog facility of Postfix logging.

syslog_name (see 'postconf -d' output) A prefix that is prepended to the process name in syslog records, so that, for example, "smtpd" becomes "prefix/smtpd".

Postfix 3.2 and later:

alternate_config_directories (empty) A list of non-default Postfix configuration directories that may be specified with "-c config_directory" on the command line (in the case of sendmail(1), with the "-C" option), or via the MAIL_CONFIG environment parameter.

multi_instance_directories (empty) An optional list of non-default Postfix configuration directories; these directories belong to additional Postfix instances that share the Postfix executable files and documentation with the default Postfix instance, and that are started, stopped, etc., together with the default Postfix instance.

SEE ALSO

pickup(8), mail pickup daemon qmgr(8), queue manager smtpd(8), SMTP server flush(8), fast flush service postsuper(1), queue maintenance postalias(1), create/update/query alias database postdrop(1), mail posting utility postfix(1), mail system control postqueue(1), mail queue control postlogd(8), Postfix logging syslogd(8), system logging

README_FILES

Use "postconf readme_directory" or "postconf html_directory" to locate this information. DEBUG_README, Postfix debugging howto ETRN_README, Postfix ETRN howto VERP_README, Postfix VERP howto