CentOS 4.6 Server Setup: LAMP, Email, DNS, FTP, ISPConfig (auch bekannt als Der Perfekte Server)

10 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_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/lib/sasl2/smtpd.conf bearbeiten, damit Postfix PLAIN und LOGIN Logins zulässt. Auf einem 64Bit Centos 4.6 musst Du stattdessen die Datei /usr/lib64/sasl2/smtpd.conf bearbeiten. So sollte es aussehen:

vi /usr/lib/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 richten wir den Hostnamen in unserer Postfix Installation ein (pass auf, dass Du server1.example.com mit Deinem eigenen Hostnamen ersetzt):

postconf -e ‚myhostname = server1.example.com‘

Nach diesen Konfigurationsschritten solltest Du eine /etc/postfix/main.cf die wie folgt aussieht (ich habe alle Kommentare entfernt):

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.2.10/samples
readme_directory = /usr/share/doc/postfix-2.2.10/README_FILES
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = 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

Der CentOS‘ Dovecot Daemon bietet standardmäßig nur IMAP und IMAPs Dienste. Da wir aber auch POP3 und POP3s haben wollen, müssen wir Dovecot dementsprechend konfigurieren. Wir bearbeiten /etc/dovecot.conf und fügen die Zeile protocols = imap imaps pop3 pop3s ein:

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
protocols = imap imaps pop3 pop3s

[...]

Starte nun 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 herauszufinden, ob SMTP-AUTH und TLS richtig funktionieren, lassen wir folgenden Befehl laufen:

telnet localhost 25

Nachdem Du die Verbindung zu Deinem Postfix Mail Server eingerichtet hast, tippe

ehlo localhost

Wenn Du die Zeilen

250-STARTTLS

und

250-AUTH LOGIN PLAIN

siehst, ist alles in Ordnung.

[[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 8BITMIME
quit
221 Bye
Connection closed by foreign host.
[[email protected] ssl]#

Gib ein

quit

um zur Kommandozeile des Systems zurückzukehren.

10.1 Maildir

Dovecot verwendet ein Maildir Format (nicht mbox), wenn Du also ISPConfig auf dem Server installierst, vergewissere Dich, dass Du Maildir unter Management -> Server -> Settings -> Email aktivierst. ISPConfig wird dann die notwendige Konfiguration vornehmen.

Wenn Du ISPConfig nicht installieren möchtest, musst Du Postfix konfigurieren, dass es E-Mails an eine Maildir des Benutzers sendet:

postconf -e ‚home_mailbox = Maildir/‘
postconf -e ‚mailbox_command =‘
/etc/init.d/postfix restart

11 Apache2 Mit PHP

Nun installieren wir Apache mit PHP (dies ist PHP 4.3.9; CentOS bietet keine PHP5 Pakete an):

yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel

Bearbeite dann /etc/httpd/conf/httpd.conf:

vi /etc/httpd/conf/httpd.conf

und ändere DirectoryIndex zu

[...]
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl
[...]

Konfiguriere nun Dein System so, dass Apache beim Hochfahren gestartet wird:

chkconfig –levels 235 httpd on

Starte Apache:

/etc/init.d/httpd start

11.1 PHP Global Deaktivieren

(Bitte überspringe dieses Kapitel, wenn Du nicht vorhast, ISPConfig auf diesem Server zu installieren!)

In ISPConfig wirst Du PHP pro Webseite konfigurieren, das heißt Du kannst festlegen, welche Webseite PHP Skripte laufen lassen kann und welche nicht. Das funktioniert nur, wenn PHP global deaktiviert ist, da sonst alle Webseiten in der Lage wären, PHP Skripte laufen zu lassen, egal was Du in ISPConfig festlegst.

Um PHP global zu deaktivieren, bearbeiten wir /etc/httpd/conf.d/php.conf und kommentieren die AddType Zeile aus:

vi /etc/httpd/conf.d/php.conf

#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#

LoadModule php4_module modules/libphp4.so

#
# Cause the PHP interpreter to handle files with a .php extension.
#
#AddType application/x-httpd-php .php
# AddType application/x-httpd-php-source .phps

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

Danach starten wir Apache neu:

/etc/init.d/httpd restart

Das könnte dich auch interessieren …