The most common culprit is a mismatch between your main configuration file ( main.cf ) and your master process definitions ( master.cf ). Check main.cf for Transport Overrides
Look for entries immediately preceding the "unknown mail transport error". You are hunting for phrases like: connect to 127.0.0.1:10024: Connection refused delivery via dovecot: dict daemon connection failed cannot connect to lmtp service 2. Verify Dependent Services Are Running
Once you have identified and corrected the underlying issue, you need to apply the changes and force Postfix to process the stuck mail queue. postfix check Use code with caution.
postfix check
Look for lines containing fatal , panic , or error immediately before the suspension notice. Common culprits include: Permissions issues on a socket (e.g., Dovecot LMTP).
tail -n 100 /var/log/mail.log # OR on some systems: journalctl -u postfix -n 100 Use code with caution. Copied to clipboard
| Cause | Solution | | :--- | :--- | | | Contact your ISP/VPS provider to unblock it, or use a smarthost/relayhost . To configure a relayhost, add or uncomment the following line in /etc/postfix/main.cf and specify your relay server: relayhost = [smtp-relay.example.com]:587 . Then reload Postfix ( systemctl reload postfix ). | | DNS Issues | If it's your DNS server , fix the issue or point to a more reliable server. If it's the destination's DNS , you cannot control it. Postfix will retry automatically. As a workaround , you can use a transport map to hardcode a mail exchanger for a specific domain. | | Transport Mapping Error | Check your transport map file: postmap /etc/postfix/transport (if it's a hash file) and verify its syntax. Ensure the transport names correspond to entries in master.cf . | | Disk Full | Free up space on the affected partition. Remove old logs, clean up temporary files, or move the mail queue to another disk. After freeing space, Postfix will resume processing automatically. | | Postfix/Crontab Missing | If Postfix is not running due to a missing crontab entry (a very old issue on some systems), ensure Postfix is set to start at boot and that the crontab is restored. | | Postfix Daemon Crash | For a known bug , check your distribution's bug tracker for patches or upgrade Postfix. For troubleshooting , run the failing process manually under a debugger like strace or gdb to get a backtrace of the crash. | | Unavailable Filter | Restart the failing filter service (e.g., systemctl restart amavisd ). If the filter is permanently removed, remove its references from Postfix's main.cf and master.cf and reload Postfix. | | Configuration Error | Correct the mistake in your main.cf or transport file. After making changes, run postfix check to test the configuration, then systemctl reload postfix to apply them. |
When you upgrade your operating system, package managers often update Postfix along with helper services like , Dovecot LMTP , SpamAssassin , or Mail::Toaster . If the upgrade introduces breaking changes to configuration files, changes file permissions, or alters network sockets, Postfix will fail to pass the email down the line. Because Postfix cannot determine exactly why the external helper failed, it flags the issue as an unknown mail transport error and temporarily defers the message to protect your queue. Step-by-step Troubleshooting Protocol
Look for entries pointing to custom transports, which look like domain.com custom_transport: .
If your Postfix is running in a chroot environment (common in Debian/Ubuntu), the upd socket or necessary libraries might not be accessible within the jail. Step-by-Step Troubleshooting Guide Step 1: Identify the Location of the Error
The "unknown mail transport error" in Postfix, often resulting in temporary suspension, occurs when the server references a delivery method not properly defined in master.cf or if integrated services like Amavis are down. Common troubleshooting involves verifying logs for specific service failures, running postfix check , and ensuring proper permissions for the postfix user.
Pay close attention to the disk where /var/spool/postfix resides. If it's 100% full, Postfix will stop functioning.