Sendmail mailqueue mit ZIG unbekannten EMails!

testit

Well-Known Member
Hallo,

ich habe folgendes Problem:

Heute vormittag stellte ich fest, dass in meiner SENDMAIL-Warteschlange (mailq) unter /var/spool/mqueue ca. 8.000 EMails drin waren.

Nach verschiedenen Beschreibungen im WWW liegen dort ausschließlich Emails, die VERSENDET werden sollen. Aber stimmt das? Auffällig ist, dass in der VON-Zeile in der mailqueue stets eine meiner Domains steht und dann unter der Spalte STATUS
"Deferred: 421 mtain-dg01.r1000.mx.aol.com Service unavailable - try again later"

Das spricht in meinen Augen doch eher dafür, dass in mailq auch eingegangeneEMails liegen, die nicht zugestellt wurden. Würde als jd. 8.000 EMails versenden mit gefälschtem Absender (eine meiner Domains) UND Phantasie-Adressaten, dann kämen die vermutlich alle zurück und müllen die Sendmail-Queue voll.

Da ich die 8.000 Mails nicht verfasst habe, frage ich mich natürlich, wie sie dort hin gelangt sind! Ich verwende sendmail zusammen mit SASLAUTH und PAM, also können Dritte eigentlich sendmail nicht als OpenRelay nutzen.

Insofern fällt mir nur noch die Möglichkeit ein, dass irgendein Script (unentdeckte Sicherheitslücke) auf dem Web-Server missbraucht wird, um Mails zu versenden und diese dann in der Sendmail-Queue landen. Dann stellt sich mir die Frage, ob man irgendwie herausfinden kann, durch welches Script (bspw. PHP) die Mails in der Mail-Queue ausgelöst wurden?

Oder ist es so, dass in der Sendmail-Warteschlange auch eingehende EMails liegen und sich das Ganze wie oben beschrieben durch SPAM-Rückläufer an mich handeln könnte, weil jd. als Absender bei den SPAM-Mails meinen Domainnamen genutzt hat?

Habt Ihr ggf. eine andere Idee, wie sich das beschriebene Problem erklären läßt?


Vielen Dank im voraus!

Nette Grüße
testit
 
Moin,

wenn ich mich recht entsinne befinden sich sowohl eingehende als auch ausgehende Mails in mqueue.

Schau mal in /var/log/maillog nach, vielleicht bringt dich das weiter. Hast du in /etc/mail nach einem mergemaster-Durchlauf auch mal ein make all install restart gemacht?!
 
Hallo,

die 8.000 Dinger platt zu machen, war nicht DAS Problem.
Sendmail gestoppt, Queue-Files gelöscht, sendmail restartet.

Mein Problem ist die Frage, ob ich mit meinen Überlegungen richtig liege, was zu so etwas führen kann!?

Rein theoretisch brauche ich ja nur mit gefälschter Absenderadresse einige Tausend Mails zu versenden und schon hat derjenige, dem die Domain der Absenderadresse gehört, das gleiche Problem wie ich (wenn es nicht doch an einem missbrauchten PHP Script o.ä.liegen sollte!).


Viele Grüße
testit
 
Oha,

Du hältst es also nicht für eine gute Idee, ca. 8.000 EMails, die offensichtlich über das auf meinem Server laufende Sendmail von irgendwelchen Spammern gegen meinen Willen trotz sasl-Auth offenkundig als SPAM in die Welt hinaus gejagd werden, zu löschen?

Interessante Perspektive!

Viele Grüße
testit
 
Die einzig logische Perspektive. Interessant wäre eine weitere Analyse gewesen - Frequenz, Inhalt, Herkunft, Adressaten, etc. Nunja, vllt nächstemal ;)

Mich würde mal interessieren, ob Du diesen Unsinn (einzig logische Perspektive) tatsächlich glaubst, oder bei Dir möglicherweise der Begriff "Logisch" anders besetzt ist?

Wenn ich 8.000 EMails in einer Mailqueue sehe, die ich nicht versendet habe und überdies diese Mails einen gefakeden Absender unter Bezugnahme auf meine Domain besitzen, gibt es keinen logischen Grund, derartige Mails nicht aus der Queue zu entfernen. Ob ich die Dateien zwecks Analyse vorher sichere, steht auf einem gänzlich anderen Blatt!

Kernfrage in meinem Ausgangsbeitrag ist, wie es trotz SASL-Auth zu erklären ist, dass eine derartige "illegaler" Emails in meiner sendmail-Queue geraten und ob es neben meinen dargelegten Überlegungen evtl. noch weitere Ideen gibt.

Viele Grüße
testit
 
Was weiß ich, was das für tausende Mails sind?
Ich lösche solche Daten auch nicht, sondern sichere sie ggf. erst einmal und schaue dann, was genau da passiert ist.
So wie Du es beschreibst, hast Du einfach Mist gebaut und ein offenes Relay gebaut, was nun fleissig genutzt wurde. Alternativ dazu, hast Du Mist gebaut und einen Mailserver aufgesetzt, der keine mails versendet.

Du hast sicherlich alle tausende Mails untersucht und Dich vergewissert, wo die herkamen und hingingen, um nicht irgendwelche Mails von irgendwelchen usern zu löschen, die da rechtmäßig drin rumlagen.

Auf den 1322 Seiten hier steht alles, was Du wissen mußt und einiges, was Du wissen solltest:
http://shop.oreilly.com/product/9781565928398.do
 
Sei doch so nett und beschäftige Dich vor dem Posten von "Allgemeinplätzen" erst einmal mit Begriffen wie:

-Open Relay
- SASLAUTHD

Wenn Du dann anschließend nochmals mein Ausgangsposting sichtest und dann auch o.a. Begriffe einordnen kannst, verstehst Du vielleicht auch mein Ausgangsproblem eher! Vorausgesetzt, Du verstehst, worum es beim Versenden von EMails via PHP geht und warum dabei mitunter die o.a. Mechanismen keine Rolle mehr spielen.

Viele Grüße
testit
 
Also ich habe das Ausgangsposting jetzt ein paar mal gelesen, verstehe aber nicht warum löschen eine gute Möglichkeit sein soll, wenn man keine Ahnung hat, warum die Mailqueue voll war. Stichproben und die Korrelation mit den Logs - es wird doch hoffentlich an allen Ecken geloggt?! - hätten zeigen müssen, woher die ensprechende Mail kommt, wohin sie gehen soll und ob das der geplanten Konfiguration entspricht. Letztendlich kann es ja nur ein Konfigurationsfehler sein, wenn in der Ausgangsqueue unerwünschte Ausgänge auflaufen (und glücklicherweise vom Empfangs MX deferred wurden).
 
Nun, dann erläutere ich das mal kurz:

Wenn die mailq von sendmail mit 8.000 Emails vollgestopft ist, die einen gefälschten Absender@meinedomain.de enthalten, gehen diese EMails zum Großteil an "Gott und die Welt", obwohl sie weder von mir verfasst wurden, noch an Tausende von Empfängern geschickt werden sollten. Ein weiterer Großteil der in der Queue enthaltenen Mails sind Rückläufer.

Ergebnis ist dann i.d.R, dass man (Server-IP) auf einer der zahlreichen Blacklists (DBSL). Resultat ist, dass dann legitime, von mir verfasste NICHT-Spam-Mails nicht mehr beim Empfänger ankommen bzw. von DBSL-nutzenden Anti-Spam-Produkten aussortiert werden u.ä.

Die logische Konsequenz ist daher, dass man zwecks Geringhaltung des Schadens und einer vorzunehmenden Analyse SCHLEUNIGST die Auslieferung derartiger EMails verhindern sollte, um nicht in o.a. DBSL-Problematik zu geraten => Sicherung und anschließende Löschung!

Unabhängig davon ist die Frage zu stellen, wie es zu dem Problem kommen konnte!

1) Mails in der Mail-Queue, die VERSENDET werden sollen

Mögl. Ursachen:

- Authentifizierungsdaten wurden ermittelt, wodurch sendmail nutzbar wird.
- Lokale Scripte (CGI, PHP, PERL etc.), die eine Sicherheitslücke aufweisen oder durch Exploits eingeschleust wurden, versenden die Mails und benötigen keine Authentifizierung (lokal).

2) Mails in der Mail-Queue, die Rückläufer darstellen

- Möglicherweise Rückläufer bewirkt durch Pkt 1.
- Gefälschte Absender mit Domains, deren zugehöriger MX-Record auf meinen Server zeigt


Meine Frage war, ob jemand von Euch noch eine weitere Idee hat.

Da ich bereits im Ausgangsbeitrag geschrieben hatte, dass SASLAUTH zum Einsatz kommt, scheidet bspw. der Hinweis von Peterle bzgl. eines offenen Relays aus.

Viele Grüße
testit
 
Zu Punkt 1) sollte ein Abgleich der Mail mit dem Log einen ersten Hinweis geben, von wem die Mail an den Mailserver übergeben wurde (Script oder authentifizierter Nutzer). Von dort aus kann man dann weitersuchen. Die Scripts loggen hoffentlich auch mit.

Punkt 2) verstehe ich nicht - warum bleiben Eingänge in der Queue hängen und werden vom Mailserver nicht entweder abgelehnt oder zugestellt? Wie dem auch sei, aber auch hier sollte das Log sagen was Sache ist.
 
Sei doch so nett und beschäftige Dich vor dem Posten von "Allgemeinplätzen" erst einmal mit Begriffen wie:

-Open Relay
- SASLAUTHD

Wenn Du dann anschließend nochmals mein Ausgangsposting sichtest und dann auch o.a. Begriffe einordnen kannst, verstehst Du vielleicht auch mein Ausgangsproblem eher! Vorausgesetzt, Du verstehst, worum es beim Versenden von EMails via PHP geht und warum dabei mitunter die o.a. Mechanismen keine Rolle mehr spielen.

Ich verstehe Dich richtig, daß Du einen sendmail-Daemon auf einem Server laufen hast und der hat 8000 Mails angesammelt, die nicht zugestellt werden und die deiner Meinung nach alle von foo.bar ohne deine Erlaubnis angeliefert wurden und nicht zugestellt werden konnten.
Weiter verstehe ich, daß dein sendmail nur auf localhost horcht und nur über ein php-script gefüttert werden kann.
Du hast die Zugänge zu sendmail zwingend mit saslauthd gesichert und bist der Meinung, daß das ein Sicherheit gegen unbefugte Eingabe von Mails an den Server darstellt.
Du hast deine Mails dann ohne zu sichern gelöscht, wenngleich Du später sagst, Du hättest sie gesichert und dann erst gelöscht.

Mein Problem ist, daß ich Dir das einfach nicht glaube, denn zum einen sind deine Angaben uneindeutig und zum anderen hast Du 8000 Mails, von denen zumindest einige nicht von Dir stammen.
Üblicherweise ist das ein klassisches offenes relay und das testest Du am besten mit den üblichen Seiten im Internet.
Alternativ dazu kann es sein, daß irgendwelche Scripte irgendwelche Löcher haben, aber das sagen Dir dein Logs.

Vielleicht zeigst Du das Setup auch einfach noch einmal strukturiert auf und irgendwem fällt noch etwas schalues dazu ein.

HTH

P.S.
Deine sendmail configs dürften auch Klarheit bringen.
 
Ich verstehe Dich richtig, daß Du einen sendmail-Daemon auf einem Server laufen hast und der hat 8000 Mails angesammelt, die nicht zugestellt werden und die deiner Meinung nach alle von foo.bar ohne deine Erlaubnis angeliefert wurden und nicht zugestellt werden konnten.

Nein, Du verstehst mich nicht vollständig richtig!
In mailq sind auch Rückläufer, weil der Spammer als Adressaten einfach wahllos foobar@domainxy.tld genutzt hat.
Es werden aber auch ganz offensichtlich Mails mit dem Absender foobar@meinedomain.de abgearbeiten zum VERSENDEN.


Weiter verstehe ich, daß dein sendmail nur auf localhost horcht und nur über ein php-script gefüttert werden kann.

Nein, der Sendmail Daemon nimmt nicht nur php-gefütterte EMails entgegen, sondern auch EMails, die über meinedomain.tld:SMTP-Port unter korrekter Angabe von Usernamen/Passwort zum Versenden hereinkommen. Schließlich möchte ich auch von unterwegs via WAN meine Mails über meinen Mailserver versenden und empfangen können.

Du hast die Zugänge zu sendmail zwingend mit saslauthd gesichert und bist der Meinung, daß das ein Sicherheit gegen unbefugte Eingabe von Mails an den Server darstellt.

Ja genau, völlig richtig, was den Zugriff auf meinen Sendmail-Daemon von außerhalb des LAN angeht.
Natürlich unter der Voraussetzung, dass - wie von mir bereits beschrieben - die Authentifizierungsdaten nicht durch einen Spammer ermittelt worden sind!


Du hast deine Mails dann ohne zu sichern gelöscht, wenngleich Du später sagst, Du hättest sie gesichert und dann erst gelöscht.

Ups, wo habe ich geschrieben, dass ich sie "ohne Sichern" gelöscht hätte?
Aber im übrigen: Selbst wenn, würde dies auch nichts mit meinem Ausgangsproblem zu tun haben!

Mein Problem ist, daß ich Dir das einfach nicht glaube, denn zum einen sind deine Angaben uneindeutig und zum anderen hast Du 8000 Mails, von denen zumindest einige nicht von Dir stammen.

Es ist für mich kein Problem, dass Du mir irgendetwas nicht glaubst!
Und ich sehe auch keine uneindeutigen Angaben von mir!

Üblicherweise ist das ein klassisches offenes relay und das testest Du am besten mit den üblichen Seiten im Internet.

Ich hatte bereits weiter oben geschrieben, dass ich KEIN offenes Relay betreibe!
Abgesehen davon, dass ein Check via
http://www.mailradar.com/openrelay/
"All tested completed! No relays accepted by remote host!"
liefert, lässt sich so etwas auch leicht prüfen, indem man einfach in seinem EMail-Client ein falsches Passwort angibt!

Alternativ dazu kann es sein, daß irgendwelche Scripte irgendwelche Löcher haben, aber das sagen Dir dein Logs.

Hier stimme ich Dir zu und hatte diese Möglichkeit ja auch bereits weiter oben in Erwägung gezogen!
Da die virtuellen Hosts in meiner apache-httpd.conf alle ihre eigenen transfer-Logs haben, werde ich zum Recherchieren des Scripts allen virtuellen hosts die gleiche Transferdatei zuweisen und dann mittels tail -f transfer-datei und gleichzeitigem Beobachten von maillog schauen, ob ich das Nadelöhr finde.

Ich habe aber auch irgendwo im Hinterkopf, dass es eine Möglichkeit gibt, den Aufruf der Mail-Funktion innerhalb von PHP-Scripten protokollieren zu lassen, inkl. aufrufendem Script.

Da - aus welchem Grund auch immer - bei den ganzen EMails der Absender stets in der Form ABSENDER_XY@meinedomainxy.tld gefaked wird, konnte ich jetzt mittels /etc/mail/access und entsprechenden OK sowie REJECT/DISCARD-Anweisungen die AUSWIRKUNGEN (weiteres Auffüllen der mailq) abstellen. Es werden so nur noch Mails vom Absender GENAUERNAME@meinedomain.tld versendet!

Aber natürlich muss ich die "Lücke" finden!

Vielen Dank erstmals für die bisherigen Hinweise, Kritiken ;-) etc.


Viele Grüße
testit
 
...
Ich hatte bereits weiter oben geschrieben, dass ich KEIN offenes Relay betreibe!
Abgesehen davon, dass ein Check via
http://www.mailradar.com/openrelay/
"All tested completed! No relays accepted by remote host!"
liefert, lässt sich so etwas auch leicht prüfen, indem man einfach in seinem EMail-Client ein falsches Passwort angibt!

Ich möchte hier ja nicht das Rumpelstielzchen geben, aber wenn Du das so sagst, bist Du Dir sicher, daß so ein sendmail nur dann mails weiterleitet, wenn man ein Paßwort eingibt?

Ansonsten sind Kontaktformularskripte ein netter Suchansatz, da es in meiner Erinnerung da Probleme geben konnte und ich solche Versuche bei meinen auch immer wieder mal beobachte.
 
Wenn ein anderer Mailserver, deinem Mailserver erzählt, er habe Mails, die für ihn interessant sein könnten - wo braucht der dann saslauthd?
Die braucht er nur, wenn eine Mail direkt bei ihm von einem user abgegeben wird und er sie dann verteilen soll.
 
Wenn ein anderer Mailserver, deinem Mailserver erzählt, er habe Mails, die für ihn interessant sein könnten - wo braucht der dann saslauthd?
Die braucht er nur, wenn eine Mail direkt bei ihm von einem user abgegeben wird und er sie dann verteilen soll.

Du übersiehst, dass wir hier über Mails reden, die ÜBER MEINEN Server VERsendet werden und über Rückläufer, weil ein Teil der fiktiven Spam-Adressaten nicht existiert.

Und mit zu versendenden Mails kommst Du auf die von Dir beschriebene Weise (Ein Server erzählt meinem was ..) NICHT in die Sendmail-Queue!

Da bleibt eigentlich nur die Ausnutzung von Sicherheitslücken oder das lokale Versenden über auf dem Server laufende/kompromittierte Programme wie bspw. Formulare u.ä.

Oder es hat jd. in der Tat die Zugangsdaten für SASLAUTH herausgefunden, was ich aber ausschließe, weil diese extrem kryptisch sind.


Gruß
testit
 
Falls es sich wirklich um Rückläufer von Spammails handelt, muss dein Server beim Versenden gar nicht involviert sein. Der Spammer kippt seinen Müll über ein offenes Relay irgendwo auf der Welt ab und Du erhältst die Bounces, weil er dich als Absender gefakt hat. Wenn Dein Mailserver dann auch für nichtexistierende Adressen annimmt (catch-all-Funktion) läuft Dir blitzschnell die Queue voll.
Ist mir vor ca. einem halben Jahr passiert, dass ein Spammer auf die Tour meine Domain missbraucht hat.
Da bei den Rückläufern i. A. der Header der Original-Mail dabei ist, wäre ein Blick in diese hilfreich gewesen.
So erschließt sich mir aus deinen Schilderungen nicht, weshalb Du so sicher bist, dass über deinen Server die Spammails versendet wurden.
 
Ich danke Dir für Deine Anmerkungen, möchte aber darauf aufmerksam machen, dass ich das genau so oben schon erläutert hatte.

Im übrigen bedarf es hierzu nicht einmal eines offenen Relays, sondern in erster Linie gefälschter Absender.

Viele Grüße
testit
 
Im übrigen bedarf es hierzu nicht einmal eines offenen Relays, sondern in erster Linie gefälschter Absender.

Sorry, aber wenn dein Mailserver von aussen Mails annimmt und versucht, diese nach aussen zuzustellen, nur weil der Absender in deiner Domain liegt, dann ist er kaputt.

Nimm von aussen nur Mails zur Zustellung an, wenn entweder der Einliefere eine korrekte SASL-Anmeldung hinter sich hat oder der Empfänger in deiner Domain liegt. Alles andere ist ein offenes Relay!
 
Ich würde mir wirklich wünschen, dass vor übereiligen Postings erst einmal ALLE Beiträge durchgelesen werden!

NATÜRLICH ist es so, dass gem. meinen bisherigen Ausführungen ein LOKAL installiertes Script, das Sendmail über einen Webserver-Prozess aufruft, standardmäßig in der Lage ist, Mails zu versenden.

Genau DAS ist ein Problem, das in Verbindung mit Sicherheitslücken - bspw. in vielen CMS - oder anderen Scripten regelmäßig auftritt und durch Exploits und Injections sowie Spammer/Unbefugte ausgenutzt wird.

NICHT im gleiche Netzwerk befindliche User müssen dagegen den AUTH-Prozess durchlaufen, um sendmail als MTA nutzen zu können.

BTW:

Ist ja ein toller Tipp sendmail so zu konfigurieren, dass nur EMAILS an Adressaten zugestellt werden, deren MX-Records bzw. zugehörige User auf dem gleichen Server liegen!:D


Viele Grüße
testit
 
Alles andere ist ein offenes Relay!

Er hat JEHOVA gesagt! :D

Ist ja ein toller Tipp sendmail so zu konfigurieren, dass nur EMAILS an Adressaten zugestellt werden, deren MX-Records bzw. zugehörige User auf dem gleichen Server liegen!:D

Er meinte
SPAMMER -> SPAMMAILSERVER -> ZIEL -> (ABLEHNG DURCHZIEL) -> (DEINEDOMAINIMABSENDER) -> WEITERLEITUNG AN DEINEN MAILSERVER -> ERNEUTER ZUSTELLVERSUCHE DURCH DEINEN MAILSERVER

Eigentlich müßte dein Mailserver den Dreck wegwerfen oder an postmaster ausliefern.

Irgendwann verrätst Du uns mal, was es denn nun war - wie auch immer viel Glück dabei, sendmail kann alles, auch toasten! :cool:
 
Zurück
Oben