Me
17.06.05, 15:07
Moinsen erstmal,
ich hab' folgendes, kleines Problem:
Zielsetzung: Imapserver für multiple Domains bereitstellen
Ist Bestand: Sendmail 8.13.3- selbstkompiliert (SASL, BDB Support),
CyrusIMAPd 2.2.12- selbstkompiliert, CyrusSASL 2.1.12-selbstkompiliert (PAM,mysql)
Alles schön und gut. Läuft auch alles. Solange ich unqualifizierte Benutzer im Cyrus anlege und den Cyrus ohne virtdomain support laufen habe.
Sobald ich eine Domainenbasierte Benutzerverwaltung erstelle (user.foo@bar.org) bekomme ich folgendes Problem:
Sendmail strippt den Domainpart des rcpt to: 'raus.
Was passiert: der cyrusv2 mailer bekommt einen unqualified user mitgeteilt und hängt seine defaultdomain an (anstatt user@foobar.org, user@meinlocaler-arp-eintrag.de) ..
Dieses Konto exisitert im günstigsten Fall nicht, .. so und jetzt seit ihr 'dran :)
Zur allgemeinen Info:
Benutzerauthentifizierung läuft über's sql-plugin des sasl-auxprop mechs (die geht auch, ohne Prob)
virtdomain option in der imapd.conf steht auf 'userid' (ansonsten löst er immer über die arp-table auf :( )
Aber ich denke, dass Problem liegt weder an der User Auth, noch am Cyrus selbst, sondern an dem, was sendmail dem mailer (cyrusv2) übergibt:
Also hab ich da angesetzt und folgendes schon getestet:
Mein sendmail.mc:
divert(-1)
#
# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
# All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
# Meine .mc
divert(0)dnl
VERSIONID(`$Id: incoming.mc, 2005/00/00 14:00:00 Me $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
define(`ALIAS_FILE',`/etc/mail/aliases')
define(`STATUS_FILE',`/etc/mail/statistics.smtp.in')
define(`confCW_FILE',`/etc/mail/local-host-names')
define(`confPID_FILE',`/var/run/sendmail-cyrus.in.pid')
define(`confDELIVERY_MODE',`background')
define(`confLOCAL_MAILER', `cyrusv2')
define(`_NO_MSA_')
undefine(`confAUTH_MECHANISMS')
DAEMON_OPTIONS(``Name=MTA, Addr=xxx.xxx.xxx.xxx, Port=25'')
define(`confPRIVACY_FLAGS',``noetrn,authwarnings,n eedmailhelo,noexpn'')
define(`QUEUE_DIR',`/var/spool/inqueue.cyrus')
FEATURE(`dnsbl', `relays.ordb.org', `"550 Email rejected - see http://www.ordb.org"')dnl
FEATURE(`dnsbl', `dnsbl.sorbs.net', `"550 Email rejected - see http://www.dnsbl.nl.sorbs.net"')dnl
FEATURE(`preserve_local_plus_detail')
FEATURE(`always_add_domain')
FEATURE(`nouucp')
FEATURE(`nocanonify')
MAILER(`smtp')
MAILER(`local')
MAILER(`cyrusv2')
Leider kann man die S= und R= Rule Flags nur direkt in der 'sendmail-source/cf/mailer/cyrusv2.m4' ändern, dort habe ich also noch folgendes gemacht:
PUSHDIVERT(-1)
#
# Copyright (c) 2002 Sendmail, Inc. and its suppliers.
# All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
# Contributed by Kenneth Murchison.
#
_DEFIFNOT(`_DEF_CYRUSV2_MAILER_FLAGS', `lsDFMnqXzC')
_DEFIFNOT(`CYRUSV2_MAILER_FLAGS', `A@/:|m')
ifdef(`CYRUSV2_MAILER_ARGS',, `define(`CYRUSV2_MAILER_ARGS', `FILE /var/imap/socket/lmtp')')
define(`_CYRUSV2_QGRP', `ifelse(defn(`CYRUSV2_MAILER_QGRP'),`',`', ` Q=CYRUSV2_MAILER_QGRP,')')dnl
POPDIVERT
#########################################
### Cyrus V2 Mailer specification ###
#########################################
VERSIONID(`$Id: cyrusv2.m4,v 1.1 2002/06/01 21:14:57 ca Exp $')
Mcyrusv2, P=[IPC], F=_MODMF_(CONCAT(_DEF_CYRUSV2_MAILER_FLAGS, CYRUSV2_MAILER_FLAGS), `CYRUSV2'),
S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrToSMTP, E=\r\n,
_OPTINS(`CYRUSV2_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`CYRUSV2_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`CYRUSV2_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_CYRUSV2_QGRP
A=CYRUSV2_MAILER_ARGS
Das Fettgedruckte ist das vom Original, laut Cyrus Doku, geänderte. Ausnahme ist folgende:
An letzter Stelle von den MailerFlags (F=) ist C eingefügt, welches normalerweise dazu zwingt, dass sendmail den user in der form user@domain an den Mailer übergibt. Hier noch mal die Zeile
_DEFIFNOT(`_DEF_CYRUSV2_MAILER_FLAGS', `lsDFMnqXzC')
Das habe ich selbsttätig hinzugefügt.
Egal wie, Original oder modifiziert: Es mag mich nicht ;)
Bitte keine Antwort: Nimm doch Postfix oder Exim oder sonst-irgendwas.. Beide lassen keine Regelüberprüfung SMTP-AUTH User gegen Datenbankbasierte Mailaddressen zu. Ich kenne Postfix und Exim, beide sind zu starr und nicht für meinen Bedarf geeignet.
Hier die Fehlermeldung:
Jun 17 14:17:13 lmtpunix[4459]: accepted connection
Jun 17 14:17:13 lmtpunix[4459]: lmtp connection preauth'd as postman
Jun 17 14:17:13 lmtpunix[4459]: verify_user(user.xyz) failed: Mailbox does not exist
Jun 17 14:17:13 sendmail[4465]: j5HCGeoH004461: to=xyz@empfängerdomain.de, delay=00:00:06, xdelay=00:00:00, mailer=cyrusv2, pri=120004, relay=localhost, dsn=5.1.1, stat=User unknown
Jun 17 14:17:13 sendmail[4465]: j5HCGeoH004461: j5HCHDoH004465: DSN: User unknown
Wie man erkennen kann, beschwert sich der Cyrus über den nichtexistenten Benutzer user.xyz
Richtig. Der exisitiert auch nicht. Es exisitiert aber user.xyz@empfängerdomain, und sendmail plottet auch genau diesen in der nächsten Zeile 'raus .. mmhhh
Irgenwer 'ne Idee ?!?!
Thx im voraus
Me
ich hab' folgendes, kleines Problem:
Zielsetzung: Imapserver für multiple Domains bereitstellen
Ist Bestand: Sendmail 8.13.3- selbstkompiliert (SASL, BDB Support),
CyrusIMAPd 2.2.12- selbstkompiliert, CyrusSASL 2.1.12-selbstkompiliert (PAM,mysql)
Alles schön und gut. Läuft auch alles. Solange ich unqualifizierte Benutzer im Cyrus anlege und den Cyrus ohne virtdomain support laufen habe.
Sobald ich eine Domainenbasierte Benutzerverwaltung erstelle (user.foo@bar.org) bekomme ich folgendes Problem:
Sendmail strippt den Domainpart des rcpt to: 'raus.
Was passiert: der cyrusv2 mailer bekommt einen unqualified user mitgeteilt und hängt seine defaultdomain an (anstatt user@foobar.org, user@meinlocaler-arp-eintrag.de) ..
Dieses Konto exisitert im günstigsten Fall nicht, .. so und jetzt seit ihr 'dran :)
Zur allgemeinen Info:
Benutzerauthentifizierung läuft über's sql-plugin des sasl-auxprop mechs (die geht auch, ohne Prob)
virtdomain option in der imapd.conf steht auf 'userid' (ansonsten löst er immer über die arp-table auf :( )
Aber ich denke, dass Problem liegt weder an der User Auth, noch am Cyrus selbst, sondern an dem, was sendmail dem mailer (cyrusv2) übergibt:
Also hab ich da angesetzt und folgendes schon getestet:
Mein sendmail.mc:
divert(-1)
#
# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
# All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
# Meine .mc
divert(0)dnl
VERSIONID(`$Id: incoming.mc, 2005/00/00 14:00:00 Me $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
define(`ALIAS_FILE',`/etc/mail/aliases')
define(`STATUS_FILE',`/etc/mail/statistics.smtp.in')
define(`confCW_FILE',`/etc/mail/local-host-names')
define(`confPID_FILE',`/var/run/sendmail-cyrus.in.pid')
define(`confDELIVERY_MODE',`background')
define(`confLOCAL_MAILER', `cyrusv2')
define(`_NO_MSA_')
undefine(`confAUTH_MECHANISMS')
DAEMON_OPTIONS(``Name=MTA, Addr=xxx.xxx.xxx.xxx, Port=25'')
define(`confPRIVACY_FLAGS',``noetrn,authwarnings,n eedmailhelo,noexpn'')
define(`QUEUE_DIR',`/var/spool/inqueue.cyrus')
FEATURE(`dnsbl', `relays.ordb.org', `"550 Email rejected - see http://www.ordb.org"')dnl
FEATURE(`dnsbl', `dnsbl.sorbs.net', `"550 Email rejected - see http://www.dnsbl.nl.sorbs.net"')dnl
FEATURE(`preserve_local_plus_detail')
FEATURE(`always_add_domain')
FEATURE(`nouucp')
FEATURE(`nocanonify')
MAILER(`smtp')
MAILER(`local')
MAILER(`cyrusv2')
Leider kann man die S= und R= Rule Flags nur direkt in der 'sendmail-source/cf/mailer/cyrusv2.m4' ändern, dort habe ich also noch folgendes gemacht:
PUSHDIVERT(-1)
#
# Copyright (c) 2002 Sendmail, Inc. and its suppliers.
# All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
# Contributed by Kenneth Murchison.
#
_DEFIFNOT(`_DEF_CYRUSV2_MAILER_FLAGS', `lsDFMnqXzC')
_DEFIFNOT(`CYRUSV2_MAILER_FLAGS', `A@/:|m')
ifdef(`CYRUSV2_MAILER_ARGS',, `define(`CYRUSV2_MAILER_ARGS', `FILE /var/imap/socket/lmtp')')
define(`_CYRUSV2_QGRP', `ifelse(defn(`CYRUSV2_MAILER_QGRP'),`',`', ` Q=CYRUSV2_MAILER_QGRP,')')dnl
POPDIVERT
#########################################
### Cyrus V2 Mailer specification ###
#########################################
VERSIONID(`$Id: cyrusv2.m4,v 1.1 2002/06/01 21:14:57 ca Exp $')
Mcyrusv2, P=[IPC], F=_MODMF_(CONCAT(_DEF_CYRUSV2_MAILER_FLAGS, CYRUSV2_MAILER_FLAGS), `CYRUSV2'),
S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrToSMTP, E=\r\n,
_OPTINS(`CYRUSV2_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`CYRUSV2_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`CYRUSV2_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_CYRUSV2_QGRP
A=CYRUSV2_MAILER_ARGS
Das Fettgedruckte ist das vom Original, laut Cyrus Doku, geänderte. Ausnahme ist folgende:
An letzter Stelle von den MailerFlags (F=) ist C eingefügt, welches normalerweise dazu zwingt, dass sendmail den user in der form user@domain an den Mailer übergibt. Hier noch mal die Zeile
_DEFIFNOT(`_DEF_CYRUSV2_MAILER_FLAGS', `lsDFMnqXzC')
Das habe ich selbsttätig hinzugefügt.
Egal wie, Original oder modifiziert: Es mag mich nicht ;)
Bitte keine Antwort: Nimm doch Postfix oder Exim oder sonst-irgendwas.. Beide lassen keine Regelüberprüfung SMTP-AUTH User gegen Datenbankbasierte Mailaddressen zu. Ich kenne Postfix und Exim, beide sind zu starr und nicht für meinen Bedarf geeignet.
Hier die Fehlermeldung:
Jun 17 14:17:13 lmtpunix[4459]: accepted connection
Jun 17 14:17:13 lmtpunix[4459]: lmtp connection preauth'd as postman
Jun 17 14:17:13 lmtpunix[4459]: verify_user(user.xyz) failed: Mailbox does not exist
Jun 17 14:17:13 sendmail[4465]: j5HCGeoH004461: to=xyz@empfängerdomain.de, delay=00:00:06, xdelay=00:00:00, mailer=cyrusv2, pri=120004, relay=localhost, dsn=5.1.1, stat=User unknown
Jun 17 14:17:13 sendmail[4465]: j5HCGeoH004461: j5HCHDoH004465: DSN: User unknown
Wie man erkennen kann, beschwert sich der Cyrus über den nichtexistenten Benutzer user.xyz
Richtig. Der exisitiert auch nicht. Es exisitiert aber user.xyz@empfängerdomain, und sendmail plottet auch genau diesen in der nächsten Zeile 'raus .. mmhhh
Irgenwer 'ne Idee ?!?!
Thx im voraus
Me