- | mailbox1: | mailbox2: |
username: | sv | ln |
adresses: | info@example.com | info@example2.com |
sv@example.com | ln@example2.com |
Hostname: vps1.laboratory.local
Software:
yum install postfix
Make x509 certs:
openssl req -utf8 -newkey rsa:2048 -keyout /etc/postfix/tls.key -nodes -x509 -days 3650 -out /etc/postfix/tls.crt -set_serial 0
Firewall ports:
firewall-cmd --add-port={25/tcp,587/tcp} --permanent firewall-cmd --reload
In: /etc/postfix/master.cf
# smtp inet n - n - - smtpd # 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 # pickup unix n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr unix n - n 300 1 qmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp relay unix - - n - - smtp showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache
In: /etc/postfix/main.cf
data_directory = /var/lib/postfix queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no smtpd_tls_cert_file = /etc/postfix/tls.crt smtpd_tls_key_file = /etc/postfix/tls.key smtpd_use_tls = yes smtpd_banner = postoffice.laboratory.local ESMTP disable_vrfy_command = yes biff = no append_dot_mydomain = no myhostname = vps1.laboratory.local myorigin = laboratory.local mydestination = vps1.laboratory.local, 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 = /etc/postfix/virtual-domains virtual_alias_maps = hash:/etc/postfix/virtual transport_maps = hash:/etc/postfix/transport smtpd_sasl_type = dovecot smtpd_sasl_path = inet:vps2.laboratory.local:12345 smtpd_sasl_auth_enable = no smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous smtpd_tls_auth_only = yes smtpd_sasl_authenticated_header = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
In: /etc/postfix/virtual-domains
example.com example2.com
In: /etc/postfix/virtual
# e-mail addr.: username @ servername (of the Dovecot-server): info@example.com sv@vps2.laboratory.local sv@example.com sv@vps2.laboratory.local info@example2.com ln@vps2.laboratory.local ln@example2.com ln@vps2.laboratory.local
After editting:
postmap /etc/postfix/virtual
In: /etc/postfix/transport
sv@vps2.laboratory.local lmtp:vps2.laboratory.local:24 ln@vps2.laboratory.local lmtp:vps2.laboratory.local:24
After editting:
postmap /etc/postfix/transport
The SE-Linux configuration is out of the scope of this howto.
Hostname: vps2.laboratory.local
firewall:
firewall-cmd --add-port={24/tcp,143/tcp,993/tcp,4190/tcp,12345/tcp} --permanent firewall-cmd --reload
Software:
yum install dovecot
En voeg toe voor Sieve:
yum install dovecot-pigeonhole
Create directories and files:
mkdir /var/dovecot/ mkdir /var/dovecot/mail mkdir /var/dovecot/sieve mkdir /var/dovecot/conf # touch /var/dovecot/conf/users # chown -R dovecot:dovecot /var/dovecot touch /var/log/dovecot.log chown dovecot:dovecot /var/log/dovecot.log
Make x509 certs:
openssl req -utf8 -newkey rsa:2048 -keyout /var/dovecot/conf/tls.key -nodes -x509 -days 3650 -out /var/dovecot/conf/tls.crt -set_serial 0
Create usernames and pw's (for the SASL-db):
The IMAP-users are created by adding a line in the users file. It has two columns, separated by a colon. The first column is the username, the second line contans the sha512-crypt which can be generated by executing:
doveadm pw -s SHA512-CRYPT
The result in /var/dovecot/conf/users will be like:
... sv:{SHA512-CRYPT}$6$T5tUmkrjF2mAbo9G$3EEvR08UCHb11KCmCHbCaPcd1xv7CylpfdZgu3gv0WddRZGoF1drU62aHHEU9U4VTeTsM/wlxI2svBXsd7auX0 ... ln:{SHA512-CRYPT}$6$RHC1lIs0bS.ggVzR$NRaTNB.SJW7.sTcFbMcbfRZdJwEllNCM4zmROOxhiTBqQr4B4oxFnOAA1I.BknbKbSZ7uuvk5Z6k3JjT1Jonq/ ...
In: /etc/dovecot/dovecot.conf
log_path = /var/log/dovecot.log mail_location = maildir:/var/dovecot/data/%n/mail auth_mechanisms = plain login disable_plaintext_auth = no #ssl_ca = </var/dovecot/conf/ ssl_cert = </var/dovecot/conf/tls.crt ssl_key = </var/dovecot/conf/tls.key # Default: namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } #mailbox "Sent Messages" { # special_use = \Sent #} mailbox Trash { special_use = \Trash } prefix = } passdb { driver = passwd-file args = scheme=CRYPT username_format=%n /var/dovecot/conf/users } first_valid_uid = 2 userdb { # For static type, LDA verify the user's existence by lookup passdb # ( http://wiki2.dovecot.org/UserDatabase/Static ) driver = static args = uid=dovecot gid=dovecot home=/var/dovecot/data/%n/mail } protocols = "imap lmtp sieve" protocol lmtp { mail_plugins = $mail_plugins sieve } service managesieve-login { inet_listener sieve { address = 0.0.0.0 port = 4190 } service_count = 1 process_min_avail = 1 } service managesieve { } #protocol managesieve { # disable_plaintext_auth = no #} protocol sieve { } plugin { sieve = /var/dovecot/data/%n/managesieve/.dovecot.sieve sieve_dir = /var/dovecot/data/%n/managesieve/sieve } # ############################### service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 } } protocol imap { disable_plaintext_auth = no } service lmtp { inet_listener lmtp { address = 0.0.0.0 port = 24 } user = dovecot } service auth-worker { # Forbid to access /etc/shadow user = $default_internal_user } service auth { inet_listener saslauth { address = 0.0.0.0 port = 12345 } }
Enable and start the Dovecot:
systemctl start dovecot systemctl enable dovecot
Make a connection with each mailbox with a MUA (mutt or Thunderbird) first before sending mail to the LMTP-connection. This will let Dovecot create the mailfolder structure for the mailbox to be stored. See: /var/dovecot/data/ (each username has it's own directory here).
Connect info for the MUA:
IMAP host:port = vps2.laboratory.local : 993 SMTP host:port = vps1.laboratory.local : 587 loginname = sv
Test with:
telnet vps1.laboratory.local 25