Ich beschreibe hier, wie mit Suse 9.2/9.3 ein E-Mailserver in einem lokalen Netzwerk eingerichtet werden kann.
Ziel: Der Suse-Rechner soll als lokaler E-Mailserver fungieren. Benutzer/innen des Netzwerkes sollen E-Mails austauschen können.
Installiert habe ich verschiedene Varianten:
- Suse 9.2 mit grafischer Oberfläche plus qpopper,
- Suse 9.3 mit grafischer Oberfläche plus qpopper,
- Suse 9.3 Minimalinstallation plus qpopper.
Qpopper muss dann nur noch aktiviert werden.
Das geschieht über Yast, Netzwerkdienste, inetd (9.2) bzw. xinetd (9.3).
Bei Suse 9.3 wurde die Aktivierung von 'xinetd' nicht gespeichert. So habe ich mir anders geholfen, damit xinetd bei jedem Rechnerstart ebenfalls gestartet wird.
Suse 9.3
|
Datei:
|
/etc/init.d/boot.local
|
|
hinzugefügt:
|
/etc/init.d/xinetd start
|
Damit das System im lokalen Netzwerk funktioniert, sind noch weitere Anpassungen notwendig.
Suse 9.2/9.3
|
Datei:
|
/etc/postfix/main.cf
|
|
hinzugefügt:
|
smtp_banner = $myhostname ESMTP
|
|
hinzugefügt:
|
mynetworks = 192.168.1.64/26
Hier soll die Netzwerkadresse stehen, nicht die einzelne IP-Adresse des betreffenden Computers.
|
|
geändert:
|
inet_interfaces = all
Mag der Computer nun über eine oder mehrere IP-Adressen verfügen, so ist es im Betrieb gleich, über welche IP-Adresse der Computer E-Mails empfängt.
|
Aktivieren der Dienste
Suse 9.2
|
Yast, Sicherheit und Benutzer, Firewall
|
Aktivieren von: POP3, SMTP
|
Suse 9.3
|
Yast, Sicherheit und Benutzer, Firewall
|
Aktivieren von: POP3, Mailserver
|
Den PC habe ich der Einfachheit wegen neu gestartet.
Mit 'telnet ip.ad.res.se 25' (Meldung: 220 pc-name.domainname.de ESMTP) bzw. 'telnet ip.ad.res.se 110' (Meldung: +OK ready ...) habe ich festgestellt, dass die entsprechenden Dienste erreichbar sind.
Benutzer/innen - Konten einrichten
Nun müssen auf dem PC lokale Benutzer/innenkonten mit Yast angelegt werden. Nachteil: der Admin kennt nun die Passwörter der Postfächer der Nutzer/innen. Das Versenden und Empfangen zu Postfächern auf diesem PC funktioniert sogar, ohne dass man sich ein Mal unter deren Namen angemeldet hat. Ich habe für Testkonten als Login-Shell '/bin/false' angegeben, so dass die Benutzer/innen sich gar nicht anmelden können.
Dann habe ich die E-Mailprogramme der Clients mit den Angaben zu POP und SMTP konfiguriert und munter E-Mails zwischen den Benutzer/innen ausgetauscht. Läuft!
Die Adresse für die Benutzer/innen lautet: benutzername-at-servername.domainname.de
Ersetzten Sie das -at- sowie die anderen Daten durch die Ihrer Installation.
Jetzt muss die ganze Sache nur noch abgesichert werden, damit der Server nicht als Open-Relay genutzt werden kann.
Das System läuft. Wie schön!
Nun soll es darum gehen, dass nicht jemand von ausserhalb den E-Mailserver benutzen kann, um Nachrichten an andere ausserhalb liegende Adressen zu verschicken, dass der Server kein Open-Relay ist. Unerfreulicherweise bekomme ich immer wieder etliche Spammails. Nach dem, was ich gelesen habe, ist es möglich, den Spammern den Hahn abzudrehen, indem man seinen E-Mailserver entsprechend konfiguriert.
So sieht /etc/postfix/main.cf auf dem Testcomputer aus. Die Kommentare habe ich weggelassen. Der obere Block ist durch die Kommentare über die main.cf verteilt. Dort habe ich nichts verändert. Der untere Block findet sich erfreulicherweise zusammenhängend am Ende der main.cf. So ist es leichter, die Datei von unten nach oben durchzusehen und den Text anzupassen.
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
unknown_local_recipient_reject_code = 550
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
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = maildrop
html_directory = /usr/share/doc/packages/postfix/html
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/packages/postfix/samples
# Ab hier habe ich den Text verändert.
readme_directory = /usr/share/doc/packages/postfix/README_FILES
smtpd_banner = $myhostname ESMTP
inet_protocols = all
biff = no
mail_spool_directory = /var/mail
canonical_maps = hash:/etc/postfix/canonical
virtual_maps = hash:/etc/postfix/virtual
relocated_maps = hash:/etc/postfix/relocated
transport_maps = hash:/etc/postfix/transport
sender_canonical_maps = hash:/etc/postfix/sender_canonical
masquerade_exceptions = root
masquerade_classes = envelope_sender, header_sender, header_recipient
myhostname = pc-name.domainname.de
mynetworks = 192.168.1.64/26, 127.0.0.0/8
program_directory = /usr/lib/postfix
inet_interfaces = all
masquerade_domains =
mydestination = $myhostname, localhost.$mydomain
defer_transports =
disable_dns_lookups = no
relayhost =
mailbox_command =
mailbox_transport =
smtpd_sender_restrictions = hash:/etc/postfix/access
smtpd_client_restrictions = permit_mynetworks
smtpd_helo_required = yes
smtpd_helo_restrictions =
strict_rfc821_envelopes = no
smtpd_recipient_restrictions = permit_mx_backup,
reject_unauth_destination,
reject_unknwon_hostname,
reject_nonfqdn_sender
smtp_sasl_auth_enable = no
smtpd_sasl_auth_enable = no
smtpd_use_tls = no
smtp_use_tls = no
alias_maps = hash:/etc/aliases
mailbox_size_limit = 0
message_size_limit = 10240000
Getestet habe ich den Server, indem ich über Telnet auf Port 25 den Dialog durchgespielt habe, den das E-Mailprogramm und E-Mailserver miteinander führen. Ich habe versucht, von einer externen Adresse aus eine Nachricht an einen andere externe Adresse zu verschicken. Das sollte nicht möglich sein.
Eingabe: telnet ip.ad.res.se 25
Antwort: Trying ip.ad.res.se.
Connect to ip.ad.res.se
Escape character is '^]'
220 computername.domainname.de ESMTP
Eingabe: HELO mailserver.sonstwo.de
Antwort: 250 computername.domainname.de
Eingabe: MAIL FROM dingsda-at-dada.net
Antwort: 250 Ok
Eingabe: RCPT TO: irgendwo-at-sonstwo.de
Antwort: 554 <irgendwo-at-sonstwo.de>: Relay access denied
So sollte es sein.

