• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Internet-Mailserver mit postfix/cyrus

Status
Für weitere Antworten geschlossen.

S_O

Member
Hallo,
ich soll für meine Schule die Schulhomepage machen, dafür wurde ein virtueller webserver gemietet bei evanzo. Da dieser jedoch nur sehr schlecht vorkonfiguriert war, muss ich das jetzt selber machen. Zurzeit stecke bei dem Mailserver fest. Ich hoffe das mir hier geholfen werden kann.

Einige Dinge im voraus:
Betriebssystem: SuSE Linux 8.2
Ich habe keine Linux-Kentnisse
Ich habe die Anleitung auf linux-tin.org gelesen
Es ist kein Kompiler installiert, ich kann nur fertige Packete installieren
Ich kann den Server nur mit Kommandozeile (über PuTTY) steuern.

Mein Ziel ist es ca. 20 Postfächer auf dem Server zu verwalten, man kann von jedem Rechner aus Mails mit SMTP senden und mit POP3/IMAP abrufen.

Als erstes habe ich auf dem Server sendmail gelöscht und postfix installiert, da es hieß, sendmail sei unsicher, langsam und sehr schwierig zu konfigurieren.

Ich habe auch ein paar minimale Einstellungen bereits in der main.cf gemacht und das empfangen von mails läuft auch schon (wenn ich z.B. über GMX eine email an benutzer@meindomain.de sende, finde ich die Mail in der Datei /var/spool/mail/benutzer wieder). Sollte der Benutzer auf dem System nicht existieren, wird die Mail nicht angenommen. Leider kann ich keine Mails versenden:
Da ich keinen lokalen Mailserver habe, sondern einem im Internet, muss der Mailserver Mails von jeder IP annehmen und mit Hilfe von Benutzername/Passwort überprüfen ob die Person berechtigt ist Mails über diesen Server zu versenden.
Postfix soll also folgendes machen, wenn jemand eine Mail verschicken will:
Ist Benutzername/Passwort in Ordnung
Ist die Absendermailadresse in Ordnung
-> Domain Richtig (@meindomain.de)
-> Ist der Benutzer berechtigt diese Adresse zu verwenden (das was vor dem @ steht)

Ich möchte jedoch nicht für jede Mail-Adresse einen Benutzer im System anlegen. Wie kann ich das einrichten/verwalten?

Wenn das läuft kommt die nächste Sache, die Benutzer wollen die Mails ja auch abrufen, ich brauche also einen POP3/IMAP-Server. Ich weiß nicht ob einer installiert ist, habe zumindest keinen gefunden.

Zuerst habe ich qpopper gefunden, denke aber jetzt das cyrus besser ist. Neben Benutzname/Passwort (die mit denen in postfix identisch sein sollten) müssen hier noch Mailboxgrenzen überprüft werden. Jeder Benutzer brauch nur eine Mailbox, auch wenn er mehrere Email-Adressen hat, kann das im Eingang alles zusammenlaufen.

Wie richte ich das ein? Ich habe immer nur Guides für lokale Server gefunden.

Schon mal vielen Dank im voraus...
 

dermichel

Advanced Hacker
S_O schrieb:
Hallo,
ich soll für meine Schule die Schulhomepage machen, dafür wurde ein virtueller webserver gemietet bei evanzo. Da dieser jedoch nur sehr schlecht vorkonfiguriert war, muss ich das jetzt selber machen. Zurzeit stecke bei dem Mailserver fest. Ich hoffe das mir hier geholfen werden kann.

Einige Dinge im voraus:
Betriebssystem: SuSE Linux 8.2
Ich habe keine Linux-Kentnisse
Ich habe die Anleitung auf linux-tin.org gelesen
Es ist kein Kompiler installiert, ich kann nur fertige Packete installieren

du kannst den compiler installieren ;-)

Ich kann den Server nur mit Kommandozeile (über PuTTY) steuern.

das ist gut so!


Da ich keinen lokalen Mailserver habe, sondern einem im Internet, muss der Mailserver Mails von jeder IP annehmen und mit Hilfe von Benutzername/Passwort überprüfen ob die Person berechtigt ist Mails über diesen Server zu versenden.
Postfix soll also folgendes machen, wenn jemand eine Mail verschicken will:
Ist Benutzername/Passwort in Ordnung
Ist die Absendermailadresse in Ordnung
-> Domain Richtig (@meindomain.de)
-> Ist der Benutzer berechtigt diese Adresse zu verwenden (das was vor dem @ steht)

zauberwort: smtpd_auth

das wurde hier echt bis zum erbrechen durchgekaut... -> suchfunktion!

Ich möchte jedoch nicht für jede Mail-Adresse einen Benutzer im System anlegen. Wie kann ich das einrichten/verwalten?

SASL hilft... fuer cyrus und postfix...

Wenn das läuft kommt die nächste Sache, die Benutzer wollen die Mails ja auch abrufen, ich brauche also einen POP3/IMAP-Server. Ich weiß nicht ob einer installiert ist, habe zumindest keinen gefunden.

->>> CYRUS

Zuerst habe ich qpopper gefunden, denke aber jetzt das cyrus besser ist. Neben Benutzname/Passwort (die mit denen in postfix identisch sein sollten) müssen hier noch Mailboxgrenzen überprüft werden. Jeder Benutzer brauch nur eine Mailbox, auch wenn er mehrere Email-Adressen hat, kann das im Eingang alles zusammenlaufen.

nochmal: SASL

Wie richte ich das ein? Ich habe immer nur Guides für lokale Server gefunden.

wo ist der unterschied zwischen einem lokalen system und einem system im internet? in der doku fehlt nur die sache mit dem smtpd_auth - und die steht hier im forum...
 
OP
S

S_O

Member
Ich habe das jetzt nach der Anleitung und mit smtpd_auth soweit installiert, wenn ich jetzt zum server verbinde, fragt er mich nach dem passwort, sowohl smtp als auch pop3.

Aber wie kann ich nun Benutzer und Mailboxen einrichten?
In der Anleitung steht ausdrücklich das die Benutzer im System vorhanden sein müsen, aber genau das will ich ja nicht!
Ich habe es auch einfach mal probiert mich mit cyradm (cyradm -user root -auth login localhost) einzuloggen, es funktioniert jedoch nicht:

Login failed: generic failure at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 114
 

dermichel

Advanced Hacker
der nutzer muss nur im system erzeugt werden, wenn du ihn nach der /etc/shadow authentifizierst. bei der sasldb muss der saslauthd laufen und der nutzer muss mit saslpasswd2 -c <user> angelegt werden. gleiches gilt auch fuer den benutzer cyrus! in der imapd.conf und in der smtpd.conf in /usr/lib/sasl2 muss "auxprop" als mechanismus eingetragen werden. hoffe das hilft, ich penn noch ne runde weiter (wlan is' was feins ;-) )....
 
OP
S

S_O

Member
Nachdem ich das gemacht habe, fragt er nicht mehr das passwort sondern erlaubt überhaupt keine verbindung mehr (bei SMTP).
Abrufen kann ich die emails jetzt, aber nur die, die ich schon vor längerem geschickt habe, die also noch mit der alten postfix-konfiguration empfangen wurden. Ich kann jetzt emails senden an mein domain wie ich will, die kommen bei falschem username nicht mehr zurück und bei richtigem nicht an.
Ich habe jetzt in der in der smtpd.conf (nur) diese einträge:

pwcheck_method: sasldb
mech_list: auxprop

Und in der imapd.conf (hier sind aber noch mehr drin):

sasl_pwcheck_method: sasldb
sasl_mech_list: auxprop

Muss pwcheck_method auf sasldb oder auf saslauthd stehen? Ich habe in verschiedenen tutorials beides gelesen. Wie kann ich nun die mailbox begrenzen? cyradm funktionert immer noch nicht.
 

dermichel

Advanced Hacker
/usr/lib/sasl2/smtpd.conf:

pwcheck_method: auxprop
mech_list: LOGIN PLAIN DIGEST-MD5 CRAM-MD5


/etc/imapd.conf:

sasl_pwcheck_method: auxprop
 

oc2pus

Ultimate Guru
@dermichel: hi, hab dich schon vermisst ;)

noch ein Tip, prüfe die Rechte der sasldb, da stehen die mit cyradm angelegten user drin:
Code:
snake:~ # ls -al /etc/sasldb2
-rw-r-----    1 cyrus    mail        12288 Apr 30 14:27 /etc/sasldb2

Code:
Login failed: generic failure at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 114

ist dein cyrus komplett installiert ?
Code:
snake:~ # rpm -qa | grep cyrus
cyrus-sasl2-2.1.12-36
cyrus-imapd-2.1.12-34

läuft der salsauthd ? (rcsaslauthd status)
[/code]
 
OP
S

S_O

Member
Habs geändert (mech_list und method). Jetzt fragt er wieder nach passwort, akzeptieren tut er es aber nicht (er kennt auch den benutzer nicht), aber die mails kommen jetzt auch wieder zurück (auch die an den Benutzer den cyrus akzeptiert). Emails abrufen geht auch immer noch.
noch ein Tip, prüfe die Rechte der sasldb, da stehen die mit cyradm angelegten user drin:
Code:
ls -al /etc/sasldb2
-rw-r-----    1 root     root         3072 Jul 26 19:36 /etc/sasldb2
Muss ich da einen Benutzer cyrus anlegen? Wenn ja, wie mach ich das?
ist dein cyrus komplett installiert ?
Code:
rpm -qa | grep cyrus
cyrus-sasl2-2.1.12-36
cyrus-imapd-2.1.12-34
cyrus-sasl2-devel-2.1.12-36
Das devel-teil stört doch nicht (habe es nachinstalliert, weil ich mir auch gedacht habe das was fehlt)?
läuft der salsauthd ? (rcsaslauthd status)
Status unused. Habs dann gestartet, gibt aber keine veränderung.
 
OP
S

S_O

Member
hast du die benutzer mit "saslpasswd2 -c <user>" angelegt??
Genau so habe ich einen Benutzer angelegt. Ich kann auch die emails abrufen (cyrus akzeptiert Benutzername/Passwort), aber postfix kennt den Benutzer nicht.
Wie prüfe ich denn die mailbox mit cyrus?
 
OP
S

S_O

Member
ich kann mich nicht daran erinnern cyrus als systemuser angelegt zu haben, aber da käuft ein programm auf cyrus:
Code:
10535 cyrus      8   0  1092  956  880 S  0.0  0.0   0:00.08 master
Aber wie kann ich ihn als sasldb-Benutzer anlegen?
 

oc2pus

Ultimate Guru
ok, die rpm-Installation hat den cyrus user dann angelegt.

ändere die Rechte für die /etc/sasldb2 auf cyrus.mail (siehe oben)

der cyrus wird wie jeder andere user in die sasldb eingetragen.

sasldblistusers2 zeigt dir die aktuell eingetragenen user in der sasldb
 
OP
S

S_O

Member
Achso, nicht in der datenbank was ändern, sondern Besitzer der Datenbank als Datei ändern.
So, cyradm läuft jetzt, aber postfix will immer noch nicht.

Ich habe mit cm in cyradm jetzt eine mailbox angelegt (cm user.benutzername), der benutzername ist identisch mit dem der sasldb. Ich kann aber immernoch keine Nachrichten senden, postfix akzeptiert das passwort nicht und schickt alle mails, die ich nach benutzername@mein-domain.de schicke wieder zurück:
Code:
x.x.x.x_does_not_like_recipient./Remote_host_said:_554_<benutzername@mein-domain.de>:_Recipient_address_rejected:_Access_denied/Giving_up_on_x.x.x.x./
 

oc2pus

Ultimate Guru
geh mal systematisch vor:
sende mail intern an intern, intern nach extern, extern an intern

logfile /var/log/mail und /var/log/messages in zwei konsolen beobachten

rcsaslauthd, rccyrus und rcpostfix laufen jetzt alle?
prüfe mit rcXXXX status
 
OP
S

S_O

Member
rcsaslauthd, rccyrus und rcpostfix laufen jetzt alle?
prüfe mit rcXXXX status
laufen alle.

Nachricht extern -> intern
messages: keine eintragung
mail:
Code:
Jul 26 22:14:08 xyz postfix/smtpd[10404]: connect from pop.gmx.de[213.165.64.20]
Jul 26 22:14:12 xyz postfix/smtpd[10404]: NOQUEUE: reject: RCPT from pop.gmx.de[213.165.64.20]: 554 <benutzername@mein-domain.de>: Recipient address rejected: Access denied; from=<gmx-email@gmx.net> to=<benutzername@mein-domain.de> proto=SMTP helo=<mail.gmx.net>
Jul 26 22:14:12 xyz postfix/smtpd[10404]: disconnect from pop.gmx.de[213.165.64.20]

Nachricht intern -> extern, hier wird es interessanter
messages: keine eintragung
mail:
Code:
Jul 26 22:18:24 xyz postfix/smtpd[23233]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Jul 26 22:18:25 xyz postfix/smtpd[23233]: connect from x.dip.t-dialin.net[x.x.x.x]
Jul 26 22:18:29 xyz postfix/smtpd[23233]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied
Jul 26 22:18:29 xyz postfix/smtpd[23233]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied
Jul 26 22:18:29 xyz postfix/smtpd[23233]: warning: SASL authentication failure: no secret in database
Jul 26 22:18:29 xyz postfix/smtpd[23233]: warning: x.dip.t-dialin.net[x.x.x.x]: SASL CRAM-MD5 authentication failed
Jul 26 22:18:29 xyz postfix/smtpd[23233]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied
Jul 26 22:18:29 xyz last message repeated 4 times
Jul 26 22:18:29 xyz postfix/smtpd[23233]: warning: SASL authentication failure: Password verification failed
Jul 26 22:18:29 xyz postfix/smtpd[23233]: warning: x.dip.t-dialin.net[x.x.x.x]: SASL PLAIN authentication failed
Jul 26 22:18:29 xyz postfix/smtpd[23233]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied
Jul 26 22:18:29 xyz last message repeated 5 times
Jul 26 22:18:29 xyz postfix/smtpd[23233]: warning: x.dip.t-dialin.net[x.x.x.x]: SASL LOGIN authentication failed
Jul 26 22:18:32 xyz postfix/smtpd[23233]: lost connection after AUTH from x.dip.t-dialin.net[x.x.x.x]
Jul 26 22:18:32 xyz postfix/smtpd[23233]: disconnect from x.dip.t-dialin.net[x.x.x.x]
Bei intern->intern genau das gleiche (auch bei messages keine eintragungen)
 

oc2pus

Ultimate Guru
ich brauch nochmal die Asugabe von
postconf -n

schau mal ob du so was stehen hast in der /etc/postfix/main.cf
Code:
#####################################
# wer relayen darf: User, die sich per smtp_auth anmelden, die aus mynetworks, und die aus relay_domains
#####################################
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains

#####################################
# fuer Authentifizierung gegen sasldb
#####################################
smtpd_sasl_security_options = noanonymous
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname

ad permission sasldb2
ls -al /etc/sasldb2
wir können diesen Fehler temporär besiegen indem wir 666 auf die Rechte setzen, aber normalerweise darf nur cyrus da lesen und schreiben.
 
OP
S

S_O

Member
wir können diesen Fehler temporär besiegen indem wir 666 auf die Rechte setzen, aber normalerweise darf nur cyrus da lesen und schreiben.
Ich scheine dazu zu lernen, genau das habe ich gerade gemacht, das problem mit dem DB error ist weg, aber das mit password failure ist noch da: SASL authentication failure: Password verification failed
Das steht in meiner main.cf:
Code:
#SMTPD Auth
#SMTPD mit SASL-Authentification verwenden
smtpd_sasl_auth_enable = yes

#Der Wert von realm (meist der lokale Servername)
smtpd_sasl_local_domain = mein-domain.de

#Zusatz-Optionen: Keine anonyme-Anmeldung verwenden
smtpd_sasl_security_options = noanonymous

#Wieder ein Workaround für ältere Clients und Outlook
broken_sasl_auth_clients = yes


#nur SASL Zugänge erlauben
smtpd_recipient_restrictions = permit_sasl_authenticated, reject
Nachtrag: Auch extern -> intern funktioniert noch nicht, keine veränderung.
 
Status
Für weitere Antworten geschlossen.
Oben