Anzahl der eMails pro Tag pro Domain beschränken

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
avu4m9
Posts: 20
Joined: 2008-07-29 00:00

Anzahl der eMails pro Tag pro Domain beschränken

Post by avu4m9 » 2008-07-29 00:05

Hallo!
Ich betreibe einen Dezidierten Rootserver mit Debian etch.
Ich habe Postfix als Mailserver installiert.
Ich würde gerne die Anzahl der eMails pro Tag für jede Domain (vHost eintrag) festlegen.
Habe schon :google: genervt aber leider konnte ich nichts brauchbares finden.
Kennt jemand einen Lösungsansatz dafür? Ich bin für jeden Tip dankbar.

lG AVUvm9

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by daemotron » 2008-07-29 06:39

Hmm, das ist mal ein interessantes "Quota". AFAIK gibt es da keine Fertig-Lösung, aber Du könntest einen eigenen kleinen Policy-Daemon skripten (in den Postfix-Examples gibt es eine brauchbare Perl-Vorlage, oder hier ein Beispiel in Python), der einen Zähler bedient (Datenbank, Textfile oder einfach Speicherstruktur im RAM, wenn es nicht sooooo wichtig ist) und danach entscheidet, ob eine Mail ein "action=dunno" (Limit noch nicht erreicht) oder ein "action=reject" (Limit überschritten) bekommt.

Du müsstest Postfix dann allerdings so konfigurieren, dass die Policy (check_policy_service) in den Restrictions vor permit_sasl_authenticated zum Zuge kommt, damit auch ausgehende Mails mit erfasst werden. Da das Postfix-Policy-Protokoll den gesamten Header (aber nichts nach DATA) zur Verfügung stellt, kannst Du sogar separate Quotas für ein- und ausgehende Mails festlegen, den Umgang mit Alias-Adressen regeln, etc. Je nachdem, wie viel Du an Arbeit reinstecken möchtest sind Dir da keine Grenzen gesetzt :wink:

avu4m9
Posts: 20
Joined: 2008-07-29 00:00

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by avu4m9 » 2008-08-08 14:48

Vielen Dank für deine Mühe.
Ich habe es nun ein bisschen anders gemacht.
Zum Hintergrund:
Ich habe einen kleinen Dezidierten Server.
Da er viel zu groß für mich alleine ist, vermiete ich einen Teil an Freunde und Bekannte.

Ich möchte nicht, dass ein Angreifer einen Fehler in einem PHP Script von einem Benutzer findet und dadurch den Server zum Massmailen missbraucht.
Da man nur über PHP eMails versenden kann, fange ich die emails nun mit einem kleinen Perl Script ab, überprüfe von welcher Domain die eMail kommt, und setze den zähler für diesen Benutzer um eine eMail hoch. Wenn die maximale Anzahl erreicht ist, werden von diesem Benutzer keine eMails mehr Versand.
Das ist für meine Zwecke einfacher - wie ich finde.

Nun habe ich nur noch ein kleines Problem.
Das Perlscript kann den Hostname nicht ausgeben.
Hier ist das Scrip, das an Stelle von sendmail platziert wird.

Code: Select all

#!/usr/bin/perl
open(MAIL, "| /usr/sbin/sendmail_def -oi -t");
while (<STDIN>) {
   print MAIL $_;
}
print MAIL qq(%ENV{'HTTP_HOST'});
close MAIL;
 

Dieses Beispiel Script sollte den Host an die eMail anhängen.

Ich hoffe ihr könnt mir helfen.
Ich danke euch schon mal für eure Hilfe.

lG AVU4m9

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by daemotron » 2008-08-08 14:55

Woher soll das Skript denn ENV{'HTTP_HOST'} kennen? Es wird ja nicht per CGI aufgerufen, sondern ganz normal über die Kommandozeile.

avu4m9
Posts: 20
Joined: 2008-07-29 00:00

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by avu4m9 » 2008-08-08 20:33

Ah ja?

Perl ist für mich Neuland...
Google sagt mir auch nichts passendes.
Könntest du mir sagen, was ich ändern muss damit es funktioniert?

MfG
AVU4m9

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by daemotron » 2008-08-08 20:47

Du kommst in einem Sendmail-Wrapper (der von PHP als normaler Prozess ohne CGI gestartet wird) nicht an Umgebungsvariablen des CGI-Moduls heran. Du kannst also nur einen hart codierten Hostnamen anhängen oder den Rechnernamen verwenden (Rückgabe von hostname()).

avu4m9
Posts: 20
Joined: 2008-07-29 00:00

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by avu4m9 » 2008-08-08 20:55

Damit wäre ich auch schon zufrieden. :)

avu4m9
Posts: 20
Joined: 2008-07-29 00:00

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by avu4m9 » 2008-08-09 14:03

So...
Ich hatte noch eine Idee.
Wenn man eine eMail via PHP versendet, wird ja immer eine Zeile in den eMail Header geschrieben, die ungefähr so aussieht:

Code: Select all

X-PHP-Script: SLDomain.TLD/forum/register.php for 35.764.876.558

Diese Zeile sollte nun an der Sendmail Schnittstelle abgefangen werden, und in eine Datenbank geschrieben werden.
Mehr fehlen nur leider ein paar Funktionen für Perl.
In PHP heißen diese zum Beispiel: explode(), eregi(), etc, ...
Danke für die Hilfe.

MfG
AVU4m9
Last edited by avu4m9 on 2008-08-09 14:43, edited 1 time in total.

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by Roger Wilco » 2008-08-09 14:39

AVU4m9 wrote:In PHP heißen diese zum Beispiel: explode(), eregi(), etc, ...

Dann schreib den Wrapper doch einfach mit PHP, wenn du dich damit besser auskennst...

avu4m9
Posts: 20
Joined: 2008-07-29 00:00

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by avu4m9 » 2008-08-09 14:42

Naja.
Da bei mir PHP nicht als fCGI läuft, müsste ich die popen Funktion freigeben.
Diese stellt aber ein Sicherheitsrisiko da.

MfG
AVU4m9

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by Roger Wilco » 2008-08-09 14:46

AVU4m9 wrote:Da bei mir PHP nicht als fCGI läuft, müsste ich die popen Funktion freigeben.
Diese stellt aber ein Sicherheitsrisiko da.

Der Sendmail-Wrapper nutzt kein CGI, sondern wird über den CLI PHP-Interpreter aufgerufen...

avu4m9
Posts: 20
Joined: 2008-07-29 00:00

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by avu4m9 » 2008-08-09 14:49

Öhm? fCGI?
Fast CGI ist eine andere Form um PHP5 mit Apache2 zum verbinden.
Hirbei kann man verschiedene php.ini's erstellen.
Bei der libapache2_mod_php5 Lösung geht das leider nicht.

MfG
AVU4m9

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by Roger Wilco » 2008-08-09 14:50

AVU4m9 wrote:Öhm? fCGI?
Fast CGI ist eine andere Form um PHP5 mit Apache2 zum verbinden.

Öhm? CLI!

avu4m9
Posts: 20
Joined: 2008-07-29 00:00

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by avu4m9 » 2008-08-09 14:51

ignoriert CLI die php.ini denn??

lG AVU4m9

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by Roger Wilco » 2008-08-09 14:55

AVU4m9 wrote:ignoriert CLI die php.ini denn??

Nein, aber der Interpreter kann ja eine eigene php.ini haben, so dass die Einstellungen nicht für die übrigen Varianten gelten.

avu4m9
Posts: 20
Joined: 2008-07-29 00:00

Re: Anzahl der eMails pro Tag pro Domain beschränken

Post by avu4m9 » 2008-08-09 14:58

Jo!
Du hast recht.
Unter '/etc/php5/CLI/' gibt es eine extra php.ini.
Vielen Dank für deine Hilfe.
Wenn ich das Script fertig habe, werde ich es hier posten.

MfG
AVU4m9