Menu Content/Inhalt
Home arrow Tipps und Tricks arrow Netzwerk arrow Postfix mit SMTP-Authentifikation

Login






Passwort vergessen?
Noch kein Benutzerkonto?
Registrieren
Postfix mit SMTP-Authentifikation PDF Drucken E-Mail

Von Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst

Inhalt
    1.
Geschwafel
    2. Ziel
    3. All you need is...
    4. Software
    5. Bauen und Installieren der RPMs
    6. Konfiguration
        6.1. Cyrus-SASL
        6.2. Postfix
    7. Das erste Mal
    8. Starten
    9. Erste Tests
        9.1. Mail vom Mailserver aus versenden
        9.2. Ist die Mail angekommen?
        9.3. Mail von entferntem Rechner an lokalen User
        9.4. Relaying testen
    10. Relaying (kontrolliert) erlauben
        10.1. Einstellungen an den Clients
    11. Fertig
    12. Bei Fehlern oder Problemen
    13. TODO
    14. Entschuldigung
    15. Quellen

1. Geschwafel

Wenn Sie über Ihren eigenen Mailserver aus dem Netzwerk E-Mails versenden wollen, dann ist dies problemlos möglich, ohne daß andere Ihren Server zum Spammen mißbrauchen können. Sie können Ihrem Mailserver das Relaying (weiterleiten der Mails) nur aus dem lokalen Netzwerk erlauben und allen anderen verbieten.

Was ist aber, wenn Sie mit einem Laptop z.B. von außerhalb ins Internet gehen und auch von dort Mails versenden wollen? In den meisten Fällen werden Sie eine dynamische IP-Adresse haben. Dadurch ist die Angabe einer IP-Adresse, von welcher aus Relaying erlaubt ist, so gut wie nicht mehr möglich bzw. äußerst unpraktisch (per SSH anmelden, IP dem Mailserver bekannt machen und diesen dann neu starten).

Aus diesem Grund ist die Anmeldung per Login und Paßwort wohl die eleganteste Methode, um den Zugang zum Mailserver zu kontrollieren. Es gibt zwar noch andere Methoden, z.B. smtp-after-pop, aber diese sind etwas tricky bzw. »unsauber« (meiner Meinung nach). Deshalb ziehe ich die Login/Paßwort-Methode vor.

2. Ziel

Wenn eine E-Mail versendet wird, soll uns der SMTP-Server einen Login-Prompt anbieten, an dem wir unseren Login und das Paßwort eingeben können - theoretisch. Den Login-Prompt möchten wir nicht selbst sehen und auch die Eingabe des Logins und des Paßwortes soll der Mailclient übernehmen. Allerdings stellen die üblichen Mailserver in der Standardkonfiguration diese Funktionalität nicht zur Verfügung.

3. All you need is...

  • Einen Rechner mit installiertem Linux ;-) Bei mir hier handelt es sich um ein Valhalla im Standard-Serversetup (Red Hat 7.3)
  • Postfix
  • Cyrus-SASL (Simple Authentication and Security Layer) stellt verschiedene Mechanismen und Methoden zur Authentifikation bereit. Wer es ganz genau wissen will, kann es in RFC 2222 nachlesen :-). Im Moment bin ich zufrieden, wenn es funktioniert.

4. Software

Es wäre durchaus möglich, sich die Originalquellen der Software zu besorgen, aber es gibt bereits vorkonfigurierte SRPM-Pakete im Internet. Tuomo Soini hat dies freundlicherweise getan und stellt die Pakete zum Download bereit.

Postfix gibt es auf http://tis.foobar.fi/software/?postfix. Im Moment (12.08.2002 14:27) ist postfix-1.1.11-t4.src.rpm aktuell. Cyrus-SASL gibt es auf http://tis.foobar.fi/software/?sasl in Version cyrus-sasl-1.5.27-t28.src.rpm.

5. Bauen und Installieren der RPMs

Das Bauen der RPMs sollte man, wie alles in einem Linuxsystem, wenn es sich vermeiden läßt, nicht als root-User durchführen. Also gehen wir als normaler User ran: Zuerst sind ein paar Verzeichnisse anzulegen (habe ich in meinem Homeverzeichnis getan. Da ich Holger heiße, ist das bei mir /home/holger oder kurz ~/):


[holger@mail holger]$ pwd
/home/holger
[holger@mail holger]$ mkdir -p rpm/BUILD rpm/RPMS/i386 rpm/SOURCES
rpm/SPECS rpm/SRPMS
[holger@mail holger]$ tree
.
`-- rpm
|-- BUILD
|-- RPMS
|   `-- i386
|-- SOURCES
|-- SPECS
`-- SRPMS
7 directories, 0 files

Wie Sie sehen, zeigt die Ausgabe von tree schön die angelegten Verzeichnisse vom aktuellen Verzeichnis aus an.

Nun sollte man dem RPM-Manager noch mitteilen, daß wir nicht als root, sondern als normaler User arbeiten. Hierzu legen wir in unserem Homeverezichnis eine Datei mit dem Namen .rpmmacros an und schreiben folgenden Inhalt hinein:


%_topdir $HOME/rpm

Mittlerweile sollten Sie sich die beiden Pakete heruntergeladen haben. Wenn nicht, wäre jetzt ein guter Zeitpunkt dafür:-) Gut, nachdem Sie die Pakete haben, kann es losgehen. Als erstes wird das SASL-Paket (bzw. die Quellen) mit folgendem Befehl installiert (immer noch im Homeverzeichnis):


rpm -ivh cyrus-sasl-1.5.27-t28.src.rpm

Wenn wir den tree-Befehl jetzt nochmal wiederholen, sehen Sie, daß tatsächlich etwas installiert wurde :-o


[holger@mail holger]$ tree
.
|-- cyrus-sasl-1.5.27-t28.src.rpm
|-- postfix-1.1.11-t4.src.rpm
`-- rpm
    |-- BUILD
    |-- RPMS
    |   `-- i386
    |-- SOURCES
    |   |-- cyrus-sasl-1.5.21-des.patch
    |   |-- cyrus-sasl-1.5.24-rpath.patch
    |   |--
cyrus-sasl-1.5.27-autoconf.patch
    |   |--
cyrus-sasl-1.5.27-ldap_mysql.ChangeLog
    |   |--
cyrus-sasl-1.5.27-ldap_mysql.README
    |   |--
cyrus-sasl-1.5.27-ldap_mysql.patch
    |   |--
cyrus-sasl-1.5.27-saslauthd-automake.patch
    |   |-- cyrus-sasl-1.5.27.tar.gz
    |   |-- cyrus-sasl-authd-conf
    |   |-- cyrus-sasl-authd-rc
    |   |-- cyrus-sasl-authd.pamd
    |   `-- cyrus-sasl-pwcheck-rc
    |-- SPECS
    |   `-- cyrus-sasl.spec
    `-- SRPMS

Jetzt wechseln wir ins Verzeichnis ~/rpm/SPECS und bauen mit dem Kommando rpm -ba cyrus-sasl.spec das installierbare RPM.


[holger@mail holger]$ cd rpm/SPEC
[holger@mail holger]$ rpm -ba cyrus-sasl.spec

Die tree-Ausgabe erspare ich uns jetzt mal, da es bereits über 400 Dateien in über 40 Verzeichnissen sind ;-)

Als nächstes sollten wir uns mal informieren, ob bereits ein SASL installiert ist. Hierfür können wir auch wieder den Paketmanager befragen:


[holger@mail holger]$ rpm -qa | grep sasl
cyrus-sasl-1.5.24-25
cyrus-sasl-md5-1.5.24-25
cyrus-sasl-devel-1.5.24-25
cyrus-sasl-plain-1.5.24-25

Wie Sie sehen, ist bei mir schon was drauf. Ich werde das zuerst entfernen. Hierzu sind allerdings root-Rechte von Nöten: Also su root: (Sie können es auch updaten mit rpm -Uhv dateiname für update).


[root@mail root]# rpm -e --nodeps cyrus-sasl
[root@mail root]# rpm -e --nodeps cyrus-sasl-md5
[root@mail root]# rpm -e --nodeps cyrus-sasl-devel
[root@mail root]# rpm -e --nodeps cyrus-sasl-plain

Nun ins Verzeichnis wechseln, in dem die kompilierten RPMs abgelegt worden sind (~/rpm/RPMS/i386). Dort finden Sie einige RPMs:


[root@mail i386]# ls -l
insgesamt 364
-rw-rw-r-- 1 holger holger 142530 Aug 12 15:02 cyrus-sasl-1.5.27-t28.i386.rpm
-rw-rw-r-- 1 holger holger  21535 Aug 12 15:02 cyrus-sasl-authd-1.5.27-t28.i386.rpm
-rw-rw-r-- 1 holger holger 114764 Aug 12 15:02 cyrus-sasl-devel-1.5.27-t28.i386.rpm
-rw-rw-r-- 1 holger holger  14711 Aug 12 15:02 cyrus-sasl-gssapi-1.5.27-t28.i386.rpm
-rw-rw-r-- 1 holger holger  28500 Aug 12 15:02 cyrus-sasl-md5-1.5.27-t28.i386.rpm
-rw-rw-r-- 1 holger holger  14412 Aug 12 15:02 cyrus-sasl-plain-1.5.27-t28.i386.rpm
-rw-rw-r-- 1 holger holger  13017 Aug 12 15:02 cyrus-sasl-pwcheck-1.5.27-t28.i386.rpm

Alle installieren mit:

rpm -ivh *

So. Wenn das alles ohne Fehler abgelaufen ist, haben Sie jetzt Cyrus-SASL drauf. Ich gehe jetzt mal kurz einen Kaffee holen und mache dann mit Postfix weiter. Was bei der Installation von Postfix analog zu der obigen abläuft, werde ich der Faulheit halber nicht mehr kommentieren, sondern nur noch die Kommandos und evtl. die Ausgaben hier reinkopieren :-)


rpm -ivh postfix-1.1.11-t4.src.rpm

Tuomo's Postfix-Version enthält bereits Unterstützung für eine Vielzahl von zusätzlichen Features, die beim Kompilieren mit der Angabe --with FEATURE an- bzw. --without FEATURE abgeschaltet werden können. Um zu sehen, welche Features das sind, genügt folgender Befehl:


[holger@mail holger]$ rpm -qpil postfix-1.1.11-t4.src.rpm
Name : postfix Relocations: (not relocateable)
Version : 1.1.11 Vendor: Foobar Oy
Release : t4 Build Date: Mon 12 Aug 2002 00:34:08 CEST
Install date: (not installed) Build Host: s.foobar.fi
Group : System Environment/Daemons Source RPM: (none)
Size : 1557927 License: IBM Public License
Packager : Tuomo Soini <
 Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst
 >
URL : http://www.postfix.org/
Summary : Postfix Mail Transport Agent
Description :
Postfix is a Mail Transport Agent (MTA), intended to be an alternative
to the widely-used sendmail. Postfix attempts to be fast, easy to
administer,
and secure.

Defaults alt ldap lmtp mysql pcre pgsql pgraw sasl tls
Disabled
Optional chroot debug ipv6 rh6x
Enabled
pfixtls-0.8.11a-1.1.11-0.9.6d.tar.gz
postfix-1.1.11-log_recipient.patch
postfix-1.1.11.tar.gz
postfix-CHROOT_README
postfix-Makefile
postfix-aliases
postfix-alternatives.patch
postfix-chroot-setup.awk
postfix-cron
postfix-init
postfix-ipv6-1.8.2.2.2.patch
postfix-main.cf.patch
postfix-master.cf.patch
postfix-pamd
postfix-pg-raw.patch
postfix-pg.postfix-1.1.4.patch
postfix-sasl_passwd
postfix-tls_per_site
postfix.spec

Da ich keine Datenbankanbindung brauche, werde ich Postfix ohne MySQL und PostgreSQL-Support kompilieren. LDAP laß ich ebenfalls weg:


[holger@mail holger]$ cd rpm/SPECS/
[holger@mail SPECS]$ rpm -ba --without ldap --without pgsql --without
mysql postfix.spec

Bevor wir nun Postfix installieren können, sollten wir vorher den vermutlich vorhandenen Sendmail entfernen (als root):


[root@mail root]# rpm -e --nodeps sendmail
[root@mail root]# cd /home/holger/rpm/RPMS/i386/
[root@mail i386]# rpm -ivh postfix-*

6. Konfiguration

6.1. Cyrus-SASL

SASL muß nicht konfiguriert, sondern nur gestartet werden:


[root@mail i386]# cd /etc/init.d/
[root@mail init.d]# ./saslauthd start

6.2. Postfix

Postfix wird in der Hauptkonfigurationsdatei /etc/postfix/main.cf konfiguriert. Folgende funktioniert bei mir.


# The queue_directory specifies the location of the Postfix queue.
queue_directory = /var/spool/postfix
# The command_directory parameter specifies the location of all
# postXXX commands.
command_directory = /usr/sbin
# The daemon_directory parameter specifies the location of all Postfix
# daemon programs
daemon_directory = /usr/libexec/postfix
# The mail_owner parameter specifies the owner of the Postfix queue
# and of most Postfix daemon processes. Specify the name of a user
# account THAT DOES NOT SHARE ITS USER OR GROUP ID WITH OTHER ACCOUNTS
# AND THAT OWNS NO OTHER FILES OR PROCESSES ON THE SYSTEM.
mail_owner = postfix
# The myhostname parameter specifies the internet hostname of this
# mail system.
myhostname = mail.testdomain.de
# The mydomain parameter specifies the local internet domain name.
mydomain = testdomain.de
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from.
myorigin = $mydomain
# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.
inet_interfaces = $myhostname
# inet_interfaces = all # Wenn der Mailserver für mehrere Domains
zuständig sein soll
# The mydestination parameter specifies the list of domains that this
# machine considers itself the final destination for.
mydestination = $myhostname, localhost.$mydomain, $mydomain
# The mynetworks parameter specifies the list of "trusted"
SMTP
# clients that have more privileges than "strangers".
#
# In particular, "trusted" SMTP clients are allowed to relay
mail
# through Postfix.
# Hier kann man dann auch um das interne Netzwerk erweitern.
# So wie es hier ist braucht jeder Client ein Passwort. Ist aber gut zum
Testen.
# Du kannst auch noch etwas wie 192.168.40.0/24 einfügen. Dann dürfen alle
Rechner
aus
# diesem Netzwerk auch Mails ohne Passwort versenden.
mynetworks = 127.0.0.0/8
# The relay_domains parameter restricts what clients this mail system
# will relay mail from, or what destinations this system will relay
# mail to.
relay_domains = $mydomain
# Erlaube sasl-authentifizierte Clients, die aus mynetworks und die aus
relay_domains
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,
check_relay_domains
# The alias_maps parameter specifies the list of alias databases used
# by the local delivery agent.
alias_maps = hash:/etc/postfix/aliases
debug_peer_level = 2
debugger_command =
    PATH=/usr/bin:/usr/X11R6/bin
    xxgdb $daemon_directory/$process_name $process_id
&
sleep 5
# sendmail_path: The full pathname of the Postfix sendmail command.
sendmail_path = /usr/sbin/sendmail
# newaliases_path: The full pathname of the Postfix newaliases command.
newaliases_path = /usr/bin/newaliases
# mailq_path: The full pathname of the Postfix mailq command. This
# is the Sendmail-compatible mail queue listing command.
mailq_path = /usr/bin/mailq
# setgid_group: The group for mail submission and queue management
# commands.
setgid_group = postdrop
# manpage_directory: The location of the Postfix on-line manual pages.
manpage_directory = /usr/share/man
# sample_directory: The location of the Postfix sample configuration
files.
sample_directory = /etc/postfix/samples
# readme_directory: The location of the Postfix README files.
readme_directory = /etc/postfix/readme
best_mx_transport = local
# SASL SUPPORT FOR CLIENT
#
# The following options set parameters needed by Postfix to enable
# Cyrus-SASL support for authentication of mailclients.
#
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes

OK. Latürnich sollten Sie Daten wie Domain, IP, Hostname, usw. an die Gegebenheiten bei Ihnen anpassen.

Da Postfix von Haus aus nicht sehr gesprächig ist, können wir ihm das beibringen. Was am Anfang gar nicht so schlecht ist, falls Probleme auftreten. Hierzu die Datei /etc/postfix/master.cf öffnen und an das smtpd in der Zeile:

smtp inet n - n - - smtpd

ein -v anhängen. Also wird die Zeile zu:

smtp inet n - n - - smtpd -v

7. Das erste Mal

Bevor wir unsere erste Testmail versenden können, sollte der Mailserver gestartet oder die Brieftaube gefüttert (siehe RFC 1149) werden :-)

[root@mail init.d]# ./postfix start

So, nun überprüfen, ob er auch wirklich läuft:

[root@mail init.d]# ps aux | grep postfix

Und... nix wars. Bei mir zumindest. Ich werde jetzt erst mal Fehler suchen. Als erstes schau ich mal hinten in /var/log/maillog rein:


Aug 13 15:06:56 mail postfix/master[25983]: fatal:
parameter inet_interfaces:
no local interface found for 192.168.150.20

Ich hatte den falschen Hostnamen in /etc/postfix/main.cf stehen. Achten Sie auch darauf, daß der Hostname auch korrekt in /etc/hosts eingetragen ist. Dadurch bestimmt Postfix die IP-Adresse, auf der er läuft.

8. Starten

Also nochmal starten:


[root@mail init.d]# ./postfix start
[root@mail init.d]# ps aux | grep postfix
postfix  13371  0.3  0.2  4300 1316 ?        S    11:06   0:00 pickup -l -t fifo
postfix  13372  0.3  0.2  4348 1364 ?        S    11:06   0:00 nqmgr -l -n qmgr
postfix  13373  0.0  0.2  4312 1416 ?        S    11:06   0:00 tlsmgr -l -t fifo

Wie Sie sehen, ist Postfix keine einzelner Prozess, wie z.B. Sendmail, sondern die Arbeit teilen sich mehrere Prozesse. Diese laufen auch im Gegensatz zu Sendmail nicht mit root-Rechten. Es muß auch noch ein Prozess namens master vorhanden sein, welcher als einziger mit root-Rechten läuft.

9. Erste Tests

Nun könnte man sich ja mal bei unserem Mailserver einloggen und schauen, was er alles zu bieten hat:


[root@mail init.d]# telnet mail.testdomain.de 25
Trying 192.168.150.10...
Connected to 192.168.150.10.
Escape character is '^]'.
220 mail.testdomain.de ESMTP Postfix

Weiter passiert erstmal nichts. Der Mailserver wartet darauf, daß wir was machen. Also begrüßen wir ihn erstmal freundlich und sagen ihm, wer wir sind:


ehlo ichbins
250-mail.testdomain.de
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN GSSAPI
250-AUTH=PLAIN LOGIN GSSAPI
250-XVERP
250 8BITMIME

ichbins sei der Name unseres Clients, welcher im Moment aber nicht von Bedeutung ist.

Die Zeile AUTH PLAIN LOGIN GSSAPI sagt uns, welche Mechanismen wir zur Anmeldung verwenden können. Bei PLAIN und LOGIN werden die Zugangsdaten im Klartext übers Netz geschickt. Hier sollte darüber nachgedacht werden, evtl. die Verbindung zu verschlüsseln (TLS z.B.). Wenn ich Zeit finde, werde ich das noch anfügen. Bei GSSAPI wird Kerberos verwendet.

Nun aber zum Testen... aber zuvor sollten Sie noch einen User anlegen, wenn es noch keinen gibt. Bei mir gibt es einen und der heißt zufälligerweise wie ich holger ;-)

9.1. Mail vom Mailserver aus versenden

Als erstes werden wir versuchen, eine Mail vom Mailserver aus zu versenden.


[root@mail init.d]# mail holger
Subject: Testmail von localhost
Sinnloser Inhalt der Testmail
.
Cc:
[root@mail init.d]#

Kurze Erläuterung zum Programm mail. Nach mail den Accountnamen oder die Mailadresse angeben, an den/die die Mail gehen soll. Dann fragt das Programm nach dem Subject der Mail (Betreffzeile). Nun können Sie Ihren Mailtext schreiben. Hier sind natürlich auch Zeilenumbrüche und Leerzeilen erlaubt. Abgeschlossen wird die Mail mit einem einzelnen Punkt (.) alleine in einer Zeile. In der nächsten Zeile können Sie noch ein Cc angeben, wenn Sie wollen; wenn nicht, einfach Enter drücken.

9.2. Ist die Mail angekommen?

Einfach mit less in die Mailbox reinschauen:


[root@mail init.d]# less /var/spool/mail/holger
From 
 Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst
  Mon Sep 02 09:09:54 2002
Return-Path: <
 Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst
 >
Delivered-To: 
 Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst
 
Received: by mail.testdomain (Postfix, from userid 0)
id 029E640789; Fri, 15 Mar 2002 21:09:53 +0100 (CET)
To: 
 Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst
 
Subject: Testmail von localhost
Message-Id:
<
 Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst
 >
Date: Mon, 02 Sep 2002 09:09:53 +0100 (CET)
From: 
 Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst
  (root)

Sinnloser Inhalt der Testmail

9.3. Mail von entferntem Rechner an lokalen User

Soweit so gut. Nun versuchen wir, von einem anderen Rechner aus eine Mail an einen lokalen User zu senden. Das machen wir, wie es sich gehört, hardcoremäßig mit telnet ;-) Hierzu loggt man sich per Telnet von einem anderen Rechner auf dem Mailserver ein. Mein Mailserver hat die IP 192.168.150.10 und dann steht daneben noch ein Webserver mit der IP 192.168.150.20. Von diesem aus werde ich die Mail nun versenden.


[root@web ~]# telnet mail.testdomain.de 25
Trying 192.168.150.10...
Connected to mail.
Escape character is '^]'.
220 mail.testdomain.de ESMTP Postfix

Erstmal begrüßen und dem Server sagen, wer ich bin: ehlo ichbins.testdomain.de

Und der Server antwortet wieder mit:


250-mail.testdomain.de
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN GSSAPI
250-AUTH=PLAIN LOGIN GSSAPI
250-XVERP
250 8BITMIME

Wir sagen dem Server, von wem die Mail kommt: mail from:< Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst >

Postfix's Antwort: 250 Ok

Den Empfänger der Mail angeben: rcpt to:< Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst >

Wieder die Antwort: 250 Ok

Wir wollen Daten versenden: data

Postfix: 354 End data with <CR><LF>.<CR><LF>

Nun die Nachricht schreiben und wieder mit einem einzelnen Punkt in einer neuen Zeile beenden:


Testnachricht vom Webserver
.

Postfix meint dazu: 250 Ok; queued as 97173E1D66

Verbindung beenden: quit

Postfix ist auch hier nicht unfreundlich: 221 Bye

Nun haben wir also auch eine Mail von einem entfernten Host an einen lokalen User gesendet. Jetzt kommt's aber :-) Wir wollen eine Mail an einen User auf einem anderen Rechner schicken => Relaying.

9.4. Relaying testen

Um dies zu testen, müssen wir eine Mail von einem Host aus versenden, von dem wir es laut Konfig nicht dürfen. Hä? Nochmal einen Blick in /etc/postfix/main.cf. Dort steht z.B.


mynetworks = 127.0.0.0/8
relay_domains = $mydomain

Das heißt, daß alle Rechner aus dem Netzwerk 127.0.0.0 Mails verschicken dürfen (OK, ist localnet) und alle Rechner die zu $mydomain gehören. Deshalb habe ich den zweiten Eintrag zu Testzwecken kurzerhand auskommentiert:


# relay_domains = $mydomain

Danach muß man allerdings Postfix dazu veranlassen, die Konfiguration neu einzulesen:


[root@mail init.d]# ./postfix reload

So, nun wieder von einem entfernten Rechner eine Verbindung aufbauen:


telnet mail.testdomain.de 25
Trying 192.168.150.10...
Connected to mail.
Escape character is '^]'.
220 mail.testdomain.de ESMTP Postfix

Ich sage: ehlo testdomain.de

Nun wieder der Server:


250-mail.testdomain.de
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN GSSAPI
250-AUTH=PLAIN LOGIN GSSAPI
250-XVERP
250 8BITMIME

Ich: mail from:< Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst >

Postfix: 250 Ok

Ich: rcpt to:< Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst >

Postfix: 554 < Diese E-Mail-Adresse ist gegen Spam-Bots geschützt, du musst Javascript aktivieren, damit du sie sehen kannst >: Recipient address rejected: Relay access denied

Ich: quit

Postfix: 221 Bye

Ziel erreicht, oder? Postfix verbietet das Relaying.

10. Relaying (kontrolliert) erlauben

Wir erinnern uns an einige Zeilen aus /etc/postfix/main.cf:


smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes

Der letzte Parameter ist speziell für einige "spezielle" Mailclients aus dem Hause M$ (Outlook Express 4, Exchange 5.0 z.B.).

Und mit der Zeile:


smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
check_relay_domains

legen wir fest, wer relayen darf: User, die sich per smtp_auth anmelden, die aus mynetworks, und die aus relay_domains.

10.1. Einstellungen an den Clients

Nun wieder der Test. Allerdings hab ich keine Lust, das jetzt wieder per Telnet zu machen, weil hierzu der Benutzername und das Passwort Base64 kodiert werden müssen. Das geht zwar an der Konsole, da bin ich aber jetzt zu faul:-) Ich nehme statt dessen den Netscape Messenger.

Nun können Sie eine Mail schreiben und diese (versuchen zu) versenden. Es sollte dann eine Passwortabfrage kommen (außer Sie haben einen Mailclient, bei dem man das Passwort schon in den Einstellungen angeben kann).
Damit hätten wir unser Ziel erreicht. Sie können in der main.cf den Parameter mynetworks noch ändern, damit Sie aus dem lokalen Netzwerk kein Passwort braucht; oder Sie können es auch so lassen und immer das Passwort verwenden. (Man muß es ja nicht von Hand eingeben, die meisten Mailclients sollten das erledigen.)

12. Bei Fehlern oder Problemen

  • In die Logdatei /var/log/maillog schauen!
  • Unter /etc/postfix gibt es viele Beispielkonfigurationen, welche sehr gut kommentiert sind. Hier die notwendigen Parameter suchen und in /etc/postfix/main.cf eintragen
  • groups.google.de befragen.
  • Immer noch Fragen? Die Newsgroup de.comm.software.mailserver kann vielleicht helfen.

13. TODO

  • Wenn Sie mit dem Server auch Mails empfangen wollen, muß das auch noch eingerichtet werden (empfehle als POP3-Server cucipop).
  • Desweiteren wäre es in der heutigen Zeit vorteilhaft, wenn alle Verbindungen zum Mailserver verschlüsselt würden. Das heißt, die Anmeldedaten sowie die Mails werden verschlüsselt zum Mailserver gesendet. Wenn ich noch dazu komme, werde ich das machen und hier die Ergebnisse veröffentlichen.
  • Postfix als Mailserver für mehrerer Domains verwenden. So wie es aussieht, werde ich in Kürze auf meinem Server E-Mails für vier Domains verarbeiten müssen. Auch an diesen Erfahrungen werde ich Sie teilhaben lassen.

14. Entschuldigung

Entschuldigen möchte ich mich für komischen Schreibstil, Tippfehler und was sonst nicht unbedingt reingehört ;-)

15. Quellen

 
< Zurück   Weiter >

Scroll-news

Mailingliste:
http://mlists.in-berlin.de/mailman/listinfo/lieo-mlists.in-berlin.de 

 

Das Forum ist online gegangen

 


Who's Online

Aktuell 10 Gäste online

Google AdSense