Mailinglist Archive: opensuse-de (1970 mails)

< Previous Next >
Re: Postfix + Cyrus + MySQL + WebCyrAdm Installation, was: Re: Logging von saslauthd
  • From: Sandy Drobic <suse-linux@xxxxxxxxxxxxxxxxxxxxxxx>
  • Date: Thu, 14 Dec 2006 19:43:11 +0100
  • Message-id: <45819B3F.9050405@xxxxxxxxxxxxxxxxxxxxxxx>
Treebeard wrote:



Wenn das bei dir nicht so wüst ist, dann kannst du das natürlich mit einer anderen Datenbank machen.
Ich bin da ganz offen und für jeden Tip dankbar.

Das hängt auch etwas davon ab, wie erweiterungsfähig deine Struktur sein soll.
Erweiterungsfähig wäre gut, mein Vorschlag ist jedoch, ich fange erstmal einfach an, um das ganze System zu verstehen.

Können wir machen. Wenn du die Grundlagen verstanden hast, solltest du in der Lage sein, Veränderungen selbst vornehmen zu können. Wobei jedoch Änderungen an bestehenden Accounts bei Einführung von virtuellen Domains nicht ganz einfach sein.



Wenn Emailadressen als Usernamen eingesetzt werden sollen, dann bekommst du Probleme mit passwd und sasldb.
Ich würde sagen, da bin ich recht frei, da sich die user nicht auf der Konsole einloggen werden. Ich kann die usernamen vorgeben und werde mich versuchen an das genannte Schema zu halten.

Siehst du Bedarf für weitere Domains und Unterteilungen oder kannst du absehen, dass die Struktur, die du aufbaust, sich nicht irgendwann um Größenordnungen ändert?
Das kann durchaus sein, dass das System irgendwann mehrere hundert Konten verwalten muss.

Das ist nicht so kritisch. Entscheidender ist, ob dies User später in virtuellen Domains angelegt werden oder ob die User in einer gemeinsamen Umgebung existieren.



Okay, ich sehe hier, dass der realm nicht angegeben ist. Sind die User als user@xxxxxxxxxx angelegt oder nur als nackte Usernamen?
Die User sind nur als nackte Usernamen angelegt, habe es aber auch mit user@xxxxxxxxxx getestet, da war der realm ausgefüllt, hat aber dennoch nicht geklappt.

Wie sind sie denn in der MySQL-Tabelle angelegt?

Ohne domain.tld. Mein Vorschlag: Schrittweise sich dem Problem nähern (s.u.)

Können wir machen. Es ist besser als endlos zu diskutieren. Wenn du mit der Installation arbeitest, wirst du auch besser sehen, was für dich Sinn macht.

Jetzt geht es los:
Postfix-Cyrus-Imap unter SUSE 10.1

Hier mein "Schlachtplan":

Vorarbeiten:
Hostnamen und Rechnernamen prüfen
Den Hostnamen habe ich mit yast eingerichtet:
Netzwerkdienste > DNS- und Hostname
Hostname: tux
Domainname: domain1.de
Nameserver 1: IP-von-NS1
Nameserver 2: IP-von-NS2
Nameserver 3: IP-von-NS3

Mit dem Befehl hostname prüfen:
# hostname
tux

Das ist nur der host, aber nicht der FQDN. Der FQDN lautet tux.domain1.de

Prüfen mit ping:
# ping tux
PING tux.domain1.de (IP-von-domain1) 56(84) bytes of data.
64 bytes from tux.domain1.de (IP-von-domain1): icmp_seq=1 ttl=64 time=0.022 ms
64 bytes from tux.domain1.de (IP-von-domain1): icmp_seq=2 ttl=64 time=0.014 ms
64 bytes from tux.domain1.de (IP-von-domain1): icmp_seq=3 ttl=64 time=0.027 ms
64 bytes from tux.domain1.de (IP-von-domain1): icmp_seq=4 ttl=64 time=0.021 ms
(Strg-C zum abbrechen)

Prüfen, ob alle benötigten Pakete installiert sind
Installiert sind folgende Pakete (alle mit yast installiert):
cyrus-imapd
cyrus-imapd-devel
cyrus-sasl
cyrus-sasl-32bit
cyrus-sasl-devel
cyrus-sasl-devel32bit
cyrus-sasl-gssapi
cyrus-sasl-plain

Nimm auch cyrus-sasl-login dazu. Wer PLAIN sagt, muss auch LOGIN sagen. (^-^)

cyrus-sasl-saslauthd
perl-Authen-SASL-Cyrus
perl-Cyrus-IMAP
perl-Cyrus-SIEVE-managesieve
postfix
postfix-mysql
procmail
mysql
mysql-client
mysql-devel
mysql-shared
pam_mysql

Der Rest ist OK.



Grundkonfiguration prüfen
Da meine main.cf inzwischen schon so oft verändert wurde, habe ich mir von postfix.org die sourcen geholt (ftp://ftp.fu-berlin.de/unix/mail/postfix/official/postfix-2.3.5.tar.gz) und die Standard-main.cf eingespielt.
Hier die main.cf mit geänderten Werten für mydestination, mydomain, myhostname, die auf die eigenen Werte angepasst wurden:

#postconf -n
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
html_directory =
mail_owner = postfix
mailq_path =
manpage_directory =
mydestination = $mydomain, localhost
mydomain = tux.domain1.de
myhostname = mail.domain1.de
newaliases_path =
queue_directory = /var/spool/postfix
readme_directory =
sample_directory =
sendmail_path =
setgid_group =
unknown_local_recipient_reject_code = 550

Nach dem versuchten Neustart des Servers (postfix reload) gab es im mail.log Meldungen wie
fatal: bad string length 0 < 1: setgid_group =
Der Postfix-Server wurde nicht neu gestartet.

Hast du die Installation mit "make install" oder mit "make upgrade" vorgenommen. Im letzteren Fall übernimmt er die bestehende Konfiguration und ergänzt nur die fehlenden Einträge.

Jetzt habe ich gelesen, dass diese auskommentiert werden sollten. In meiner alten Konfiguration stand der Wert auf maildrop
Das hat mich dazu veranlasst die beiden Konfigurationen mal miteinander zu vergleichen.
Hier ein Vergleich meiner alten und der "Standard"(?) Konfiguarion (unerwähnte Parameter sind gleich):
alt:
daemon_directory = /usr/lib/postfix
neu:
daemon_directory = /usr/libexec/postfix

alt:
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
neu:
nicht gesetzt

alt:
sendmail_path = /usr/sbin/sendmail
neu:
sendmail_path =

alt:
newaliases_path = /usr/bin/newaliases
neu:
newaliases_path =

alt:
mailq_path = /usr/bin/mailq
neu:
mailq_path =

alt:
setgid_group = maildrop
neu:
setgid_group =

alt:
html_directory = /usr/share/doc/packages/postfix/html
neu:
html_directory =

alt:
manpage_directory = /usr/share/man
neu:
manpage_directory =

alt:
sample_directory = /usr/share/doc/packages/postfix/samples
neu:
sample_directory =

alt:
readme_directory = /usr/share/doc/packages/postfix/README_FILES
neu:
readme_directory =

Ich vermute, dass diese Parameter bei der manuellen Installation gesetzt werden, beim installieren eines Paketes mit yast aber bereits vorkonfiguriert sind.
Habe daher die Werte aus der alten Konfiguration geholt und in main.cf eingesetzt.

#postconf -n
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
debug_peer_level = 2
html_directory = /usr/share/doc/packages/postfix/html
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
mydestination = $mydomain, localhost
mydomain = tux.domain1.de
myhostname = mail.domain1.de
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/packages/postfix/README_FILES
sample_directory = /usr/share/doc/packages/postfix/samples
sendmail_path = /usr/sbin/sendmail
setgid_group = maildrop
unknown_local_recipient_reject_code = 550

Jetzt startet auch der Server

OK.

hier meine master.cf:
#
# Postfix master process configuration file. For details on the format
# of the file, see the Postfix master(5) manual page.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd -vv

Puh, nimm lieber die -vv weg. Erst, wenn wir ein Problem innerhalb von Postfix-Lookups untersuchen müssen, ist so ein tiefer Loglevel sinnvoll.

#submission inet n - n - - smtpd
# -o smtpd_etrn_restrictions=reject
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
# -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission inet n - n - - smtpd
# -o smtpd_etrn_restrictions=reject
# -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - n - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
#localhost:10025 inet n - n - - smtpd -o content_filter=
scache unix - - n - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
cyrus unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
procmail unix - n n - 20 pipe
flags=R user=cyrus argv=/usr/bin/procmail -o SENDER=${sender} -m USER=${user} EXTENSION=${extension} /etc/procmailrc

Der Rest ist soweit OK.



Hier meine /usr/lib64/sasl2/smtpd.conf:
pwcheck_method: saslauthd
mech_list: plain login

Du hast PLAIN noch nicht installiert, wenn ich das richtig sehe. Prüfe das besser!

Bei 32-Bit SUSE liegt die Datei wohl in /usr/lib/sasl2/smtpd.conf.

Hier meine /etc/imapd.conf:
postmaster: postmaster
configdirectory: /var/lib/imap
partition-default: /var/spool/imap
admins: cyrus
allowanonymouslogin: no
allowplaintext: yes
sasl_mech_list: plain
servername: domain1.de
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
dracinterval: 0
drachost: localhost
sasl_pwcheck_method: saslauthd auxprop
sasl_auxprop_plugin: sasldb

sasl_pwcheck_method: saslauthd
Lasse das sasl_auxprop_plugin weg, sonst gibt es am Ende noch User in der sasldb, und du wunderst dich über die Logins.

sievedir: /usr/sieve
sendmail: /usr/sbin/sendmail
sieve_maxscriptsize: 32
sieve_maxscripts: 5
unixhierarchysep: yes

Lasse die unixhierarchysep erst einmal weg (default).

Versuche dann mal folgendes:

passwd cyrus (passwort vergeben)
su cyrus
cyradm localhost

Dann hier einen user anlegen (nur username ohne domain, da mydestination und keine virtuellen Domains).
"cm user.username" (by unixhierarchysep: yes musst du natürlich "cm user/username" angeben.

Fehlermeldung? Zeigt lm jetzt die Mailbox an?

Wenn das klappt, lege den User auch in der passwd an. Achte aber darauf, dass du beim Anlegen in Yast ankreuzt, dass der User keine Loginshell hat.

Prüfe, dass saslauthd läuft und mit "pam" gestartet ist:

ps aux | grep saslauthd

Teste, dass der user sich auf imap einloggen kann:

testsaslauthd -u user -p password -s imap

Prüfe, dass die SuseFirewall imap herauslässt und versuche, dich mit einem client im internen Netzwerk über Imap mit dem Server zu verbinden. Hat es bis hierhin geklappt, sollte Cyrus für den Anfang laufen.


Ich habe in yast noch den User postfix der Gruppe mail hinzugefügt, da sonst der user postfix nicht auf den Socket zugreifen kann (Besitzer cyrus:mail).

dann setze den Transport in Postfix:

postconf -e "mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp"
postfix reload

Jetz schicke mal eine Mail an den user und schaue nach, ob sie in Cyrus eingetroffen ist.

Sandy
--
Antworten bitte nur in die Mailingliste!
PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com

--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups