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

Wie Sieve Script in Cyrus integrieren ??

SCT

Member
Ich betreibe einen Cyrus IMAP Server. Dieser bietet die Option Sieve-Scripte zu nutzen.
Die Scripte befinden sich in meiner Distro unter /var/lib/sieve. Dort sind bereits Unterverzeichnisse 'a'-'z' irgendwan mal automatisch angelegt worden.

Meine Annahme ist nun daß ich dort für jeden Mailbox-User ein Script hinterlegen kann. Stimmt das? Wie muss es heissen? Genau wie der User selbst? Muss das Script dann noch aktiviert oder für Cyrus verständlich kompiliert werden? Wenn ja wie?

Bei Google und auch hier habe ich dazu nix gefunden.

Vielen Dank !!
SCT
 

stka

Guru
schau dir mal smartsive an, das hat eine Weboberfläche und jeder Benutzer kann sich seine Regel selber zusammen stellen.
 
OP
S

SCT

Member
Smartsieve habe ich auch schon ausprobiert. Leider kann ich mich da nicht anmelden. Weder als 'Cyrus' user noch als ein normaler user mit seinem Passwort. 'root' geht auch nicht. In der Readme steht dazu nichts, auch nicht wie man einen Smartsieve-Nutzer anlegen kann. In cyradm logge ich mich mit mit root+rootpasswort ein. So konnte ich auch maildirs für die Nutzer einrichten.

Anderer Vorschlag oder hat jemand eine Idee wie man sich in Smartsieve einloggen kann?

Vielen Dank!!
 

stka

Guru
Für smartsieve gibt es im Verzeichnis conf (Ich weiß ja wo du deine Installation hast, noch kenne ich deine Distribution) eine Datei server.conf. Die ist wichtig. Hier mal ein funktionierendes Beispiel:
Code:
$servers['mail'] = array(
    'display' => 'com1.mail.lokal',
    'server' => '127.0.0.1',
    'sieveport' => '2000',
    'imapport' => '143/imap/notls',
    'maildomain' => 'mail.lokal'
);
Dann die Einträge in der imapd.conf auch hier ein Beispiel:
configdirectory: /var/lib/cyrus
partition-default: /var/spool/cyrus/mail
partition-news: /var/spool/cyrus/news

sievedir: /var/spool/sieve
admins: cyrus
allowanonymouslogin: no
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
sasl_pwcheck_method: auxprop
lmtp_overquota_perm_failure: no
lmtp_downcast_rcpt: yes


tls_cert_file: /etc/ssl/zertifikate/mailcert.pem
tls_key_file: /etc/ssl/zertifikate/mailkey.pem
tls_ca_path: /etc/ssl/zertifikate/demoCA
tls_sieve_cert_file: disabled
tls_sieve_key_file: disabled

tls_session_timeout: 1440
tls_cipher_list: TLSv1:SSLv3:SSLv2:!NULL:!EXPORT:!DES:!LOW:mad:STRENGTH
Alle Benutzer wurden mit saslpasswd angelegt und dann musst du drauf achten, das die Datei sasldb2 diese Rechte hat:
-rw-rw---- 1 root sasl 12288 2009-09-07 12:50 /etc/sasldb2
Wobei die Gruppe auch eine andere sein kann, je nach Distribution. Ich habe hier ubuntu.
 
OP
S

SCT

Member
Also ich probiere das dann zu Hause nochmal mit Euren Tips. Ich schreibe dann obs geklappt hat.
 
OP
S

SCT

Member
Tja, sehr ärgerlich. Trotz Eurer Hilfe will es nicht klappen.

Die Datei /etc/sasldb2 existiert gar nicht. Laut /var/log/messages wird auch diese Datei gesucht und nicht gefunden. Das Cyrus SASL Paket ist aber installiert und der saslauthd läuft.

Ich habe SuSE 10.2.

Die sieveshell lässt sich auch nicht connecten. Auch da schlägt die Autentifizierung fehl.

Trotzdem vielen Dank für Eure Hilfe
SCT
 
OP
S

SCT

Member
stka schrieb:
Deshalb sage ich ja, du MUSST die Benutzer mit saslpasswd anlegen!!

--> Das habe ich gestern auch versucht.... Das Programm 'saslpasswd' gibts nicht auf meinem System (SuSE 10.2). Der Aufruf saslpasswd liefert ein 'command not found'.

Was nu? Muss ich noch was installieren? Eigentlich habe ich schon alles von der DVD was so mit SASL zu tun hat, installiert.
 

stka

Guru
Dann schau mal in deinen Softwarerepositories nach und installier dir sasl und die dazugehörigen Pakete. Ich weiß nicht wie die bei suse heiße. Auf jeden Fall wirst du ohne sasl kein sieve nutzen können.
 
OP
S

SCT

Member
stka schrieb:
Dann schau mal in deinen Softwarerepositories nach und installier dir sasl und die dazugehörigen Pakete. Ich weiß nicht wie die bei suse heiße. Auf jeden Fall wirst du ohne sasl kein sieve nutzen können.

Wenn ich in yast (SuSE 10.2) als Suchstring 'sasl' eingebe, dann werden folgende Pakete angeboten:
cyrus-sasl
cyrus-sasl-crammd5
cyrus-sasl-devel
cyrus-sasl-digestmd5
cyrus-sasl-gssapi
cyrus-sasl-otp
cyrus-sasl-plain
cyrus-sasl-saslauthd
cyrus-sasl-sqlauxprop
perl-Authen-SASL
perl-Authen-SASL-Cyrus
php5-pear-auth_sasl
qca-sasl

Ich habe alle Pakete, außer qca-sasl, cyrus-sasl-gssapi und cyrus-sasl-otp installiert. Ich glaube, das ist schon zuviel. Ich habe keine Ahnung in welchem Paket 'saslpasswd' enthalten ist.

Ich bin für jede Anregung dankbar.
 

ThomasF

Hacker
Hmmm ....

stka schrieb:
Deshalb sage ich ja, du MUSST die Benutzer mit saslpasswd anlegen!!

IMHO nicht unbedingt ...

Ich verwende den Cyrus mit LDAP über PAM ... ohne die sasldb
Das funktioniert dann mit dem saslauthd

Code:
cat imapd.conf |grep -v ^# |grep sasl

sasl_mech_list: PLAIN LOGIN
sasl_minimum_layer: 0
sasl_pwcheck_method: saslauthd

Und in der /etc/default/saslauthd findet man dann folgende Passage:

Code:
# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent  -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam       -- use PAM
# rimap     -- use a remote IMAP server
# shadow    -- use the local shadow password file
# sasldb    -- use the local sasldb database file
# ldap      -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"

Ich persönlich mag die sasldb nicht ...da sie die Passwörter im Klartext speichert ...

EDIT: Der Befehl sollte meist saslpasswd2 heißen ... Welche Vervollständigung bekommst du denn wenn du sasl und dann zweimal TAB eingibst ?

So long

ThomasF
 

Tooltime

Advanced Hacker
ThomasF schrieb:
Ich persönlich mag die sasldb nicht ...da sie die Passwörter im Klartext speichert ...
Im Gegenzug begrenzt du damit die möglichen Auth-Mechanismen auf die, die mit Klartextpasswörten arbeiten. Daraus resultiert die zwingende Notwendigkeit einer Verschlüsselung die durch den Server erzwungen werden sollte. Auch verliert man einen wesentlichen Vorteil von cyrus-imap, Mailuser ohne einen Account auf der Maschine.
 

ThomasF

Hacker
Hi

Tooltime schrieb:
Im Gegenzug begrenzt du damit die möglichen Auth-Mechanismen auf die, die mit Klartextpasswörten arbeiten. Daraus resultiert die zwingende Notwendigkeit einer Verschlüsselung die durch den Server erzwungen werden sollte. Auch verliert man einen wesentlichen Vorteil von cyrus-imap, Mailuser ohne einen Account auf der Maschine.

@Tooltime

ja du hast im Prinzip recht, doch diese Einschränkung nehme ich durchaus bewusst in Kauf ... zumal ich bislang noch nie in die Verlegenheit geraten bin Mail-Accounts anlegen zu müssen wenn ich keinen entsprechenden User im System hatte ...
Als Workaround (falls dies doch mal der Fall sein sollte) könnte man jedoch einfach einen User in der /etc/passwd anlegen der zwar ein Passwort aber dessen Home auf /dev/null und dessen Shell auf /bin/false zeigt. Was im übrigen auch den Vorteil hat das man nicht zwei Auth Quellen pflegen muss ...

So long

ThomasF
 
OP
S

SCT

Member
ThomasF schrieb:
Der Befehl sollte meist saslpasswd2 heißen ... Welche Vervollständigung bekommst du denn wenn du sasl und dann zweimal TAB eingibst ?
--> ok das Programm saslpasswd2 existiert nun auf meinem Rechner. Ich habe damit nun per 'saslpasswd2 -c <user>' einen user angelegt. Die Datei /etc/sasldb2 existiert nun. Leider musste ich diese Datei auch für andere zum Lesen freigeben, da die sieveshell sonst keinen Zugriff darauf hat.

AAaaaber leider klappt das Einloggen mit der sieveshell trotzdem nicht. Hier der message log:
/usr/lib/cyrus/bin/timsieved
Mar 24 19:38:23 fliegerhost sieve[13046]: executed
Mar 24 19:38:23 fliegerhost sieve[13046]: accepted connection
Mar 24 19:38:23 fliegerhost perl: DIGEST-MD5 client step 2
Mar 24 19:38:26 fliegerhost sieve[13046]: badlogin: localhost[127.0.0.1] DIGEST-MD5 authentication failure
Mar 24 19:38:29 fliegerhost sieve[13046]: badlogin: localhost[127.0.0.1] CRAM-MD5 authentication failure
Mar 24 19:38:32 fliegerhost sieve[13046]: badlogin: localhost[127.0.0.1] PLAIN authentication failure
Mar 24 19:38:33 fliegerhost sieve[13046]: badlogin: localhost[127.0.0.1] LOGIN authentication failure
Mar 24 19:38:33 fliegerhost perl: No worthy mechs found

Und nu?
 
OP
S

SCT

Member
stka schrieb:
Mach mal ein "rpm -qa | grep sasl" und poste das Ergebnis.
-->
cyrus-sasl-plain-2.1.22-28
cyrus-sasl-devel-2.1.22-28
cyrus-sasl-2.1.22-28
cyrus-sasl-crammd5-2.1.22-28
cyrus-sasl-saslauthd-2.1.22-27
cyrus-sasl-digestmd5-2.1.22-28

Ich denke damit sind alle notwendigen Pakete installiert.
Ich bin als root am system eingeloggt, wenn ich versuche mich mit dem Usernamen des Users der die Mailbox hat, an der sieveshell einzuloggen. Vieleicht gibt es ja da auch noch Probleme. Werde zu Hause - heute Abend - mal probieren mich als der User am System einzuloggen und mich dann so bei sieshell einloggen. Mal sehen...

Wir kriegen das schon hin... (Nächste Woche bin ich im Urlaub, da habt Ihr Ruhe ;-))
Vielen Dank !!
 

ThomasF

Hacker
*grummel*

Also ... ob jetzt über sasldb2 oder PAM über saslauthd ... ( scheint ja niemand zu glauben das die zweite Variante klappt, obwohl ich in dieses Thema fast genauso viel Zeit investiert habe wie in LDAP) ....

@SCT

Wie versuchst du dich denn über die Konsole mit sieveshell einzuloggen ???
Du schreibst du bist als root eingeloggt ...
Um es mal abzukürzen, sollte der Versuch so aussehen :

Code:
sieveshell -u username -a username localhost

Zweitens solltest du dir im klaren sein das sieve ein Teil von cyrus ist und zusammen mit dem imapd konfiguriert wird.
Also die Frage, existiert die Mailbox für den User und kannst du als User auf die Mailbox zugreifen ?

Drittens, versuche bitte in der /etc/imapd.conf folgende Parameter zu verwenden:

Code:
sasl_mech_list: PLAIN LOGIN
sasl_minimum_layer: 0

MD5 hin oder her ... solange du auf einem Rechner ( localhost ) bleibst brauchst du erst mal die Verbindung nicht abzusichern.
Sobald du dich aber von einem anderen Rechner mit der Mailbox verbindest solltest du z.B imaps verwenden.

Und um danach die sieve Regeln zu setzen wirst du wohl über ein Webfrontend gehen ( smartsieve, websieve oder das Horde Modul Ingo)
Wenn der Apache auch auf diesem Rechner läuft brauchst du dort dann zur Absicherung der Verbindung https ...

Generell gilt : Einen Mailserver zu betreiben erfordert viel Hintergrundwissen und Verantwortung ... es spricht aber nichts dagegen für den Anfang eine eher unsichere Variante zu konfigurieren um das ganze erst einmal zum laufen zu bekommen. Jeder sollte sich jedoch bewusst machen das wenn er irgendwo ein Passwort eingibt das dann über ein Netzwerk übertragen wird immer die Möglichkeit besteht das man dieses Passwort auch abfangen kann ... Und deshalb sollte man genau diese Übertragung absichern

nochmal an SCT:

Wenn ich das richtig verstanden habe nutzt du den Mailserver nur für dich selber !?!
Bitte sei dir im klaren darüber das dies ein sehr umfangreiches Thema ist ... aber auch, zugegeben, ein sehr interessantes ;)
Es gibt aber zu diesem Thema auch Unmengen an hervorragenden HowTos und Büchern ( z.B das Postfix Buch von Peer Heinlein als Einstieg)
Versuche also bitte an dieses Thema mit soviel Sorgfalt zu bearbeiten wie es verdient ;)

So long

ThomasF
 

stka

Guru
ThomasF schrieb:
*grummel*

Also ... ob jetzt über sasldb2 oder PAM über saslauthd ... ( scheint ja niemand zu glauben das die zweite Variante klappt, obwohl ich in dieses Thema fast genauso viel Zeit investiert habe wie in LDAP) ....



ThomasF

OHHH du ärmster, ich werde dich mal in den Arm nehmen und trösten.

Klar glaube ich dir, dass das klappt nur habe ich das bisher immer so gemacht. Hab etwas Rücksicht mit mir ich bin schon zu alt um mich noch zu ändern :D
Mit sasldb2 konnte ich das passenden Beispiel aus meiner Konfiguration ziehen und ich weiß, dass es so klappt. zusammen mit saslauthd sollten dann auch alles andere klappen.
 
Oben