Hallo Rene, Hallo morphium
um nicht falsch verstanden zu werden. Ich bin Dir und 'morphium' für die
selbstlose Hilfe dankbar.
> Was klappt mit meiner Lösung nicht? Die ist getestet mit Deinen Angaben.
> Sollten Eure Tabellen doch anders aussehen, bitte exakt posten.
>
Zu aller Erst muss ich eingestehen, ich habe Eure Lösungen verwechselt ;-(
morphium : subselect : geht für Konten und Aliase, nicht für Catch All
morphium : join : geht für Konten und Aliase, nicht für Catch All
Zumindest das 'LIMIT 1' hatte ich zur Sicherheit eingesetzt, weil Postfix
hier kein Array sondern nur einen Wert erwartet und ich nicht weiß, wie er
sonst reagiert.
Rene : gesuchten anzeigen : geht nur für das Konto, nicht für ein Alias und
auch nicht für Catch All
Einige meiner Angaben hier waren vereinfacht oder schlicht falsch abgetippt,
das habe ich aber bei der Übertragung Eurer Lösungen wieder korrigiert. Zur
Sicherheit der Strukturexport meiner beiden Tabellen:
CREATE TABLE IF NOT EXISTS `mail_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL DEFAULT '',
`password` varchar(128) NOT NULL DEFAULT '',
`password_enc` varchar(128) NOT NULL DEFAULT '',
`uid` int(11) NOT NULL DEFAULT '0',
`gid` int(11) NOT NULL DEFAULT '0',
`homedir` varchar(255) NOT NULL DEFAULT '',
`maildir` varchar(255) NOT NULL DEFAULT '',
`postfix` enum('Y','N') NOT NULL DEFAULT 'Y',
`domainid` int(11) NOT NULL DEFAULT '0',
`customerid` int(11) NOT NULL DEFAULT '0',
`quota` bigint(13) NOT NULL DEFAULT '0',
`pop3` tinyint(1) NOT NULL DEFAULT '1',
`imap` tinyint(1) NOT NULL DEFAULT '1',
`username` varchar(255) NOT NULL DEFAULT '',
`policy_greylist` enum('policy_greylist','') NOT NULL DEFAULT '',
`bypass_virus_checks` char(1) NOT NULL DEFAULT 'N',
`bypass_spam_checks` char(1) NOT NULL DEFAULT 'N',
`spam_tag2_level` float(4,1) NOT NULL DEFAULT '5.0',
`spam_kill_level` float(4,1) NOT NULL DEFAULT '20.0',
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=642 ;
CREATE TABLE IF NOT EXISTS `mail_virtual` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL DEFAULT '',
`email_full` varchar(255) NOT NULL DEFAULT '',
`destination` text NOT NULL,
`domainid` int(11) NOT NULL DEFAULT '0',
`customerid` int(11) NOT NULL DEFAULT '0',
`popaccountid` int(11) NOT NULL DEFAULT '0',
`iscatchall` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1017 ;
Allen Lösungsansätzen fehlt noch das Thema 'iscatchall'. Mir ist klar, dass
hier mit Stringoperationen und Bedingungen gearbeitet werden muss denn:
Wenn eine Mailadresse in mail_virtual.email nicht existiert, so ist doch zu
prüfen ob die Domain der angefragten Emailadresse (%s) in einer (oder
mehreren) mail_virtual.email auch Verwendung findet und ob diese(r)
Eintr[a|ä]g(e) dann noch iscatchall=1 haben. In diesem Fall ist der
betreffener mail_virtual Eintrag wieder in Richtung mail_users zu prüfen ob
dort policy_greylist gesetzt ist.
Das fällt mir ja schon in normalen Worten schwer.
> Nö - kannst Du die Datensätzte für "das Konto ist ein catch_all"
> bitte posten?
>
INSERT INTO `mail_virtual` (`id`, `email`, `email_full`, `destination`,
`domainid`, `customerid`, `popaccountid`, `iscatchall`) VALUES
(2, '[email protected]', '[email protected]', '[email protected]', 1, 3, 548,
1),
(901, '[email protected]', '[email protected]', '[email protected]', 1, 3, 0, 0);
INSERT INTO `mail_users` (`id`, `email`, `password`, `password_enc`, `uid`,
`gid`, `homedir`, `maildir`, `postfix`, `domainid`, `customerid`, `quota`,
`pop3`, `imap`, `username`, `policy_greylist`, `bypass_virus_checks`,
`bypass_spam_checks`, `spam_tag2_level`, `spam_kill_level`) VALUES
(548, '[email protected]', '', '*****', 2000, 2000, '/var/kunden/mail/',
'its/[email protected]/', 'Y', 1, 3, 0, 1, 1, '[email protected]',
'policy_greylist', 'N', 'N', 5.0, 20.0);
Mit freundlichen Grüßen / Kind regards
Ronny Seffner
--
Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen
www.seffner.de | [email protected] | +49 35245 72950
_______________________________________________
Lug-dd maillist - [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd