I can't seem to receive messages. What does this error mean: ": mail for example.com loops back to myself"?
Postfix reports this error when a DNS reply points to your mail server, but Postfix has not been configured to accept mail for the domain. Postfix accepts mail for domains listed in mydestination, relay_domains, virtual_mailbox_domains, virtual_alias_domains, and domains that resolve to IP addresses listed in inet_interfaces and proxy_interfaces. Your domain must be listed in one of these parameters.
When I make changes to configuration files or lookup tables, do I have to reload Postfix?
It depends on the type of file you are changing. Changes in files that Postfix reads into memory at startup require a reload. Examples of such files are main.cf, master.cf, and any lookup table using regular expressions. DB or DBM files are not read into memory and don't require reloading Postfix when they are changed.
Is there some kind of "include" directive for main.cf?
No. Most administrators with complex configurations create a Makefile that will cat the necessary files together. If you have other regular administrative tasks, add them to your Makefile too. Your Makefile should have an entry that looks something like this:
main.cf: file1 file2 file3 cat file1 file2 file3 > main.cf.new mv main.cf.new main.cf
Then type make main.cf to rebuild your configuration file.
How can I get confirmation of mail deliveries?
This is not currently available in Postfix.
How can I add or append a disclaimer (or other text) to the bottom of every email that gets sent from my mail server?
By design this is not implemented in Postfix directly. It's not the job of an MTA, and it's not as simple a problem as it seems because of MIME and digital signatures. MIME messages have a structure that can be very complex. Digital signatures attest to the fact that a signed message has not been modified. Adding a footer to the bottom of a message breaks both of these. Some people add short text to the headers of email messages, but the text is not likely to be seen by most users. The real solution is to configure your clients to add whatever text is required.
Having said that, it is possible to configure a content filter that appends the text for you. Follow the directions for configuring Postfix to work with a content filter. Your filter should be MIME-aware, and you should be aware that digital signatures will no longer work.
How can I save a copy of every message?
Specify an address in the always_bcc parameter. It will receive copies of all messages.
How can I enable quota or size limits on users' mailboxes?
This is not really a function of Postfix, although you may achieve what you're looking for with the mailbox_size_limit. Be aware that if you use maildir-style mailboxes, this parameter limits only the size of individual mail files and not the size of the entire mailbox. Mailbox quotas are best enforced by the mail store itself, which might be done through normal operating system accounting or your POP/IMAP server configuration.
When Postfix sends a bounce message, it tells the sender, "For further assistance, please send mail to ". But I want it to include my domain name in the address, e.g., . How can I do that?
The idea behind this message is that users should contact their own postmasters for assistance, since the local postmaster is quite possibly the one who has to deal with the problem. If you definitely want to make the change, you have to modify the source code.
I have aliases where only the first address in the list receives messages. The others can receive mail fine when sent to them directly, but when they're part of an alias, their messages don't arrive.
If you are using an external program for delivery, it might not handle more than one address at a time. Such is the case with maildrop, for example. To make sure that Postfix passes messages for delivery one at a time, set the transport_destination_recipient_limit parameter in main.cf to 1. transport is the name of the transport method making the deliveries. If you are using maildrop, the parameter looks like the following:
maildrop_destination_recipient_limit = 1
I have a few interfaces on my system. How can I get Postfix to bind to only one of them?
Specify the IP address of the interface you want Postfix to use in the inet_interfaces parameter.
With Sendmail, I used to get a warning notice when a message couldn't be delivered for four hours or so. Can I get that with Postfix?
This is controlled by the delay_warning_time parameter. By default it's set to 0 for "never".
I'm trying to test alias lists to see which addresses are expanded from particular lists. With other mail servers, I used the EXPN command to get a full recipient list, but it doesn't seem to work with Postfix.
Postfix does not support EXPN. Because of Postfix's architecture and concern for security, the unprivileged SMTP server doesn't know anything about local aliases. It's the privileged local delivery agent that actually expands aliases at the point of delivery. If you use a mailing-list manager, it most likely has a command to tell you who is on the list, or you may have to check the aliases file on the mail server system.
What's the difference between mailbox_transport and mailbox_command?
The mailbox_transport parameter is set to a service from master.cf, while mailbox_command refers to an actual command on the mail server filesystem. There are a few parameters that can affect mailbox delivery. The parameters in order of preference are mailbox_transport, mailbox_command_maps, mailbox_command, and home_mailbox.
All of my internal systems relay through my mail gateway. Is there a way to remove or hide the hostnames and IP addresses of my internal systems from the messages headers before they go out?
Add header checks that match the header lines showing your internal systems and specify the IGNORE action for them.
How can I tell Postfix to forward all messages that are sent to nonexistent mailboxes to a particular user?
You can specify an address in the luser_relay parameter and disable local_recipient_maps:
luser_relay = info local_recipient_maps =
Be careful if you do this. With the prevalence of spam, the address you specify is liable to catch a large amount of junk mail.
According to my configuration, Postfix should be replying with a permanent error code (554), but it keeps sending a temporary one (454). Why is it doing that?
You probably have soft_bounce turned on.
I have a whole bunch of mail queued up that I know I don't need. Is there any way to delete all of the queued messages?
# postsuper -d ALL
Note that the word ALL must be all capital letters, and that executing this command deletes all of the mail in your queue.
Where does Postfix log its information?
Postfix logs messages to your system's syslogd daemon. Check your system documentation to find the actual log file.
Postfix seems to be ignoring the MX record and trying to deliver directly to the A record system. Is this normal?
It's normal if you have:
disable_dns_lookups = yes
specified in main.cf. You might also have a transport map specified in brackets, in which case Postfix delivers directly to the system:
example.com smtp:[mail.example.com]
I get a lot of spam with a blank envelope sender address. How can I block these?
You don't want to block messages based on the fact that they have a null return path. Accepting null envelope addresses is required by the standards. The technique is used to prevent looping of error notifications. You'll have to identify the spam by some other means.
I'm using header_checks and body_checks to block spam, but some legitimate email is blocked by my checks. Is there any way to whitelist some mail so that the header and body checks are not applied?
No. Header and body checks are applied to every message and should be used for simple checks that can easily be applied to all mail. If you need anything more sophisticated, you should set up a content filter that has the smarts you need.
Introduction
Prerequisites
Postfix Architecture
General Configuration and Administration
Queue Management
Email and DNS
Local Delivery and POP/IMAP
Hosting Multiple Domains
Mail Relaying
Mailing Lists
Blocking Unsolicited Bulk Email
SASL Authentication
Transport Layer Security
Content Filtering
External Databases
Appendix A. Configuration Parameters
Appendix B. Postfix Commands
Appendix C. Compiling and Installing Postfix
Appendix D. Frequently Asked Questions