===== Overview =====
[[http://tmade.de|Home tmade.de]]
[[http://wiki.tmade.de|Home Wiki]]
===== Postfix =====
==== Set Sender ====
Add the following line to "/etc/postfix/main.cf":
sender_canonical_maps = hash:/etc/postfix/sender_canonical
Create "/etc/postfix/sender_canonical" with following content:
user user@domain.com
user email.adress@gmx.net
www-data mail@example.com
root email.adress@gmx.net
**Note:** The "domain" (and the local user on the system) in the adress **MUST** exist!! If not - depending on the config from the receiver - the mail will be rejected.
Create Postfix database:
postmap /etc/postfix/sender_canonical
Restart Postfix:
/etc/init.d/postfix restart
====generic=====
If you run a postfix host without a signed domain such as "localdomain.local" you can't send mails. Therefore you need a "generic mapping":
Content file "/etc/postfix/generic":
myaccount@myserver mymailadresse@domain.net
Execute:
postmap /etc/postfix/generic
====sasl_password====
Content "/etc/postfix/sasl_password":
mail.domain.net myuser@domain.net:my-strong-secret
Execute:
postmap hash:/etc/postfix/sasl_password
====main.cf====
/etc/postfix/main.cf "satellite" example:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = test.local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, dev.local, localhost.local, localhost
relayhost = mail.test.net:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 10.0.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = all
# required if you want to send mails to a mailprovider
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_generic_maps = hash:/etc/postfix/generic
smtp_tls_security_level = may
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
smtp_sasl_security_options = noanonymous
#smtp_tls_security_level = encrypt
==== Transport ====
/etc/postfix/transport #The optional transport table specifies a mapping from email addresses to message delivery transports and next-hop destinations
postmap /etc/postfix/transport #To rebuild an indexed file after changing the corresponding transport table
==== Commands ====
Check mail/ mail content by executing "mailq" or "postqueue -p":
mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
DB3207206C 465 Thu Mar 23 14:37:38 test@testmail.org
(connect to 127.0.0.1[127.0.0.1]:10024: Connection refused)
test_receiver@linux.de
then:
postcat -q DB3207206C
Check postfix-config:
postconf -n
or
cat /etc/postfix/main.cf
==== Postfix & DNS ====
To set Postfix (/etc/postfix/main.cf) to resolv DNS set
smtp_host_lookup = DNS
To set Postfix to listen on /etc/hosts set
smtp_host_lookup = native
==== Logging ====
Logfiles are into
/var/log/mail
or
/var/log/mail.log
Errors are in
mail.warn
or
mail.err
==== main.cf ====
mynetworks = 192.168.1.0/24 #Limit access on Networks
mynetworks = 192.168.1.5/32 #Limit access on IP
==== Usefull commands ====
Commandline:
mailq | less #Read mail-queue
mailq | egrep '^--' #amount mails in queue
postsuper -d ALL #delete all mails in queue
postsuper -d ID #delete mail by id ("mailq | less" to get the id!)
postsuper -h ALL #all mails on "hold"
postsuper -h ID #mail by id on hold
postsuper -H ALL #release all mails on hold
postsuper -H ID #release mail by id on hold
postqueue -f #deliver immediately if to many mails on hold (flush)
postsuper -d ALL deferred #postpone mails to a future time
newaliases #to fix the problem "error: open database /etc/aliases.db: No such file or directory" or recreate aliases.db for postfix
Delete mail by mail-name
mailq | tail +2 | awk 'BEGIN { RS = "" } / user@domain-example\.com$/ { print $1 }' | tr -d '*!' | postsuper -d -
or
for i in `mailq | egrep "^[0-9A-F]" | grep 'MAILER-DAEMON' | cut -c1-12 | sed s/\*//g` ; \
do
echo "delete msg: $i" ;
postsuper -d $i ;
done
Check:
mailq
or
postqueue -p
=== Links ===
http://www.postfix.org/postsuper.1.html
http://www.gentoo.de/doc/de/virt-mail-howto.xml
http://wiki.list.org/display/DOC/MTA+Performance+Tuning+Tips+for+Postfix
http://www.cyberciti.biz/faq/howto-blacklist-reject-sender-email-address/