If any partition (especially / or /var ) is at 100%, delete old logs, clear package caches, or expand the storage volume. Scenario D: Broken Chroot Environment
If the transport name is perfectly correct in both files, the error can be thrown because Postfix is physically blocked from executing the transport binary. Chroot Restrictions
Always run postfix check after making changes to main.cf or master.cf to catch syntax errors early.
If you recently edited main.cf or master.cf , Postfix might be trying to send mail through a service that isn't defined or is misspelled.
This error typically surfaces when Postfix is told to use a specific "transport"—a method for moving mail—that it cannot find or verify. Missing Transport Definitions
: The most common reason is an invalid entry in your configuration files, such as a misspelled transport name (e.g., smtp , local , relay ) or an incorrect relayhost setting.
example.com smtp:[://example.com] anotherdomain.com dovecot: Use code with caution.
references a custom transport (like a content filter or a specific relay service) that isn't properly defined in , Postfix will simply report it as "unknown". Configuration
If the partition containing /var/spool/postfix is full, or if the destination mailbox has a filesystem quota issue, the transport agent might crash or return an unexpected exit code. Check disk space with df -h . 4. Clearing the "Suspended" Status
If the chroot environment is missing essential files (e.g., /etc/resolv.conf , /etc/services , or necessary libraries), Postfix processes cannot perform basic operations like DNS lookups or port resolution. This leads to the ambiguous "unknown mail transport error." One tell-tale sign is that Postfix works fine in non-chrooted configurations but fails when chroot is enabled.
Seeing the error message in your Postfix mail logs means your mail server has stopped trying to deliver emails to a specific destination. Postfix throws this generic error when an underlying delivery agent crashes, misbehaves, or disappears unexpectedly.
The upd process holds a persistent connection to the DB. If the DB restarts, kills idle connections, or hits a timeout, the upd process continues using a dead socket. When a delivery attempt occurs, the transport fails silently.
If your transport relies on an external binary located outside the chroot jail (like a custom script in /usr/local/bin ), Postfix will fail to find it and throw an unknown error. Try changing the chroot column value for that specific transport line to n (no), then restart Postfix. File Permissions
If you use a transport_maps file to route mail for specific domains to specific relays, an incorrectly compiled database will cause this issue. Check your main.cf for the map definition: transport_maps = hash:/etc/postfix/transport Use code with caution.
If you route incoming or outgoing mail through a Milter (like OpenDKIM or OpenDMARC) or a content filter (like Amavisd or SpamAssassin), a crash or hang in those services will break the mail transport chain.