Der perfekte Server – CentOS 5.2 x86_64
11 Postfix mit SMTP-AUTH und TLS
Nun installieren wir Postfix und Dovecot (Dovecot wird unser POP3/IMAP Server sein):
yum install cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain postfix dovecot
Als Nächstes konfigurieren wir SMTP-AUTH und TLS:
postconf -e ’smtpd_sasl_local_domain =‘
postconf -e ’smtpd_sasl_auth_enable = yes‘
postconf -e ’smtpd_sasl_security_options = noanonymous‘
postconf -e ‚broken_sasl_auth_clients = yes‘
postconf -e ’smtpd_sasl_authenticated_header = yes‘
postconf -e ’smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination‘
postconf -e ‚inet_interfaces = all‘
postconf -e ‚mynetworks = 127.0.0.0/8‘
Wir müssen /usr/lib64/sasl2/smtpd.conf editieren so dass Postfix PLAIN und LOGIN Logins erlaubt. Es sollte folgendermassen aussehen:
vi /usr/lib64/sasl2/smtpd.conf
pwcheck_method: saslauthd mech_list: plain login |
Danach erstellen wir die Zertifikate für TLS:
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
Als Nächstes konfigurieren wir Postfix für TLS:
postconf -e ’smtpd_tls_auth_only = no‘
postconf -e ’smtp_use_tls = yes‘
postconf -e ’smtpd_use_tls = yes‘
postconf -e ’smtp_tls_note_starttls_offer = yes‘
postconf -e ’smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key‘
postconf -e ’smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt‘
postconf -e ’smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem‘
postconf -e ’smtpd_tls_loglevel = 1′
postconf -e ’smtpd_tls_received_header = yes‘
postconf -e ’smtpd_tls_session_cache_timeout = 3600s‘
postconf -e ‚tls_random_source = dev:/dev/urandom‘
Dann vergeben wir den Hostnamen in unserer Postfix Installation. Bitte versichere Dich dass Du server1.example.com mit Deinem eigenen Hostnamen ersetzt :
postconf -e ‚myhostname = server1.example.com‘
Nach diesen Konfigurationsschritten solltest Du ein /etc/postfix/main.cf haben, dass folgendermassen aussieht (Ich habe alle Kommentare bereinigt):
cat /etc/postfix/main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.3.3/samples
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
mynetworks = 127.0.0.0/8
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
myhostname = server1.example.com |
Als Standard bietet der CentOS Dovecot Dämon nur IMAP and IMAP Dienste. Da wir auch POP3 und POP3s benötigen, werden wir Dovecot entsprechend konfigurieren müssen. Wir editieren /etc/dovecot.conf und aktivieren die Zeile protocols = imap imaps pop3 pop3s:
vi /etc/dovecot.conf
[...] # Base directory where to store runtime data. #base_dir = /var/run/dovecot/ # Protocols we want to be serving: imap imaps pop3 pop3s # If you only want to use dovecot-auth, you can set this to "none". protocols = imap imaps pop3 pop3s # IP or host address where to listen in for connections. It's not currently # possible to specify multiple addresses. "*" listens in all IPv4 interfaces. # "[::]" listens in all IPv6 interfaces, but may also listen in all IPv4 # interfaces depending on the operating system. [...] |
Nun starten wir Postfix, saslauthd, und Dovecot:
chkconfig –levels 235 sendmail off
chkconfig –levels 235 postfix on
chkconfig –levels 235 saslauthd on
chkconfig –levels 235 dovecot on
/etc/init.d/sendmail stop
/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/dovecot start
Um zu sehen ob SMTP-AUTH und TLS richtig funktionieren, führen wir folgenden Befehl aus:
telnet localhost 25
Nachdem die Verbindung zum Postfix Mail Servertyp erstellt wurde…
ehlo localhost
Wenn Du folgende Zeilen bekommst:
250-STARTTLS
and
250-AUTH LOGIN PLAIN
ist alles wunderbar!
[[email protected] ssl]# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‚^]‘.
220 server1.example.com ESMTP Postfix
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
qiot
502 5.5.2 Error: command not recognized
quit
221 2.0.0 Bye
Connection closed by foreign host.
[[email protected] ssl]#
Gib ein
quit
um zur Kommandozeile zurückzukehren.
11.1 Maildir
Dovecot benutzt das Maildir Format (nicht mbox), versichere Dich also dass Maildir aktiviert wurde unter Management -> Server -> Settings -> Email, wenn Du ISPConfig installieren möchtest. ISPConfig wird dann die notwendige Konfiguration übernehmen.
Wenn Du ISPConfig nicht installieren möchtest, dann musst Du Postfix so konfigurieren dass es die Mails zum Maildir eines Benutzers sendet (das geht aber auch wenn man ISPConfi einsetzt!):
postconf -e ‚home_mailbox = Maildir/‘
postconf -e ‚mailbox_command =‘
/etc/init.d/postfix restart