User Tools

Site Tools


picoenterprise:mta

MTA (mail transfer agent)

Below a configuration for an MTA with the config and user-info in files on the system.

For a configuration with the user-info stored in LDAP see:

This system is only the MTA itself, it routes the e-mail to one or more mailstores on separate machines. Cyrus, Dovecot, Zarafa, pick your choice.

To service an RBL yourself, see: https://hannibal.solstice.nl/hannibalwiki/picoenterprise:email-rbl

Service description

This configuration has a submission listener on port 587/tcp, which only accepts TLS connections, and authenticated users (out of a sasl-passwordfile).

Destination mail has to be delivered on port 25/tcp.

Installation

apt-get install  postfix postfix-doc sasl2-bin libsasl2-modules

Extra stuff:

apt-get install  postgrey
apt-get install  postfix-policyd-spf-python

Configuration

Add the postfix user to the group sasl:

usermod -a -G sasl postfix

Configure SASL: /etc/default/saslauthd

START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="sasldb"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/run/saslauthd"

/etc/postfix/sasl/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

/etc/postfix/main.cf

maximal_queue_lifetime = 12w
bounce_queue_lifetime =  12w
smtpd_banner = postoffice.example.com ESMTP
disable_vrfy_command = yes
biff = no
append_dot_mydomain = no
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
myhostname = smtp.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = intra.example.com
mydestination = smtp.intra.example.com, localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
virtual_alias_domains = example2.com example3.com example4.com
virtual_alias_maps = hash:/etc/postfix/virtual
transport_maps = hash:/etc/postfix/transport
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_sasl_auth_enable = no
#broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_tls_auth_only = yes
smtpd_sasl_authenticated_header = yes
policy-spf_time_limit=3600s
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   check_helo_access hash:/etc/postfix/whitelist,
   reject_unauth_destination,
   check_policy_service unix:private/policy-spf,
   reject_rbl_client cbl.abuseat.org,
   reject_rbl_client zen.spamhaus.org,
   reject_rbl_client bl.spamcop.net,
   check_policy_service inet:127.0.0.1:10023

/etc/postfix/virtual

info1@example.com              me@intra.example.com
info2@example.com              me@intra.example.com
info3@example.com              me@intra.example.com
info4@example.com              you@intra.example.com
info5@example.com              you@intra.example.com
info6@example.com              we@intra.example.com
info7@example.com              we@intra.example.com
info8@example.com              me@intra.example.com,we@intra.example.com

/etc/postfix/transport

me@intra.example.com           smtp:cyrus1.intra.example.com:25
you@intra.example.com          lmtp:cyrus2.intra.example.com:24
we@intra.example.com           lmtp:dovecot1.intra.example.com:24
*                              smtp:[172.16.50.2] 

/etc/default/postgrey

POSTGREY_OPTS="--inet=10023 --delay=250 --max-age=400"
POSTGREY_TEXT="Lots of work now but welcome in five minutes"

/etc/postfix-policyd-spf-python/policyd-spf.conf

debugLevel = 1 
defaultSeedOnly = 1
HELO_reject = SPF_Not_Pass
Mail_From_reject = Fail
PermError_reject = False
TempError_Defer = False
skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0//104,::1//128

/etc/postfix/master.cf

...
# smtp-submission:
587       inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
...
# SPF:
policy-spf  unix  -       n       n       -       -       spawn 
     user=nobody argv=/usr/bin/policyd-spf
...
picoenterprise/mta.txt · Last modified: 2017/05/11 17:33 by Luc Nieland