Inleiding
Dit document beschrijft hoe u een e-maillus kunt herkennen op de E-mail security applicatie (ESA).
Achtergrondinformatie
Mail Loops kan worden aangegeven door berichten met dezelfde Message-ID die meer dan 3 keer zijn geïnjecteerd. Mail Loops kan symptomen van hoge CPU, langzame levering en algemene prestatieproblemen veroorzaken. Doorgaans zouden berichten die meer dan een keer geïnjecteerd worden herhaling aangeven, maar soms worden ze meer dan een keer geïnjecteerd vanwege problemen, of het kan een slordige spammer zijn die steeds hetzelfde spambericht injecteert met hetzelfde Message-ID.
Meestal wordt een mailloop veroorzaakt door een e-mail infrastructuur probleem dat hetzelfde bericht of dezelfde reeks berichten die rond uw netwerk van e-mail server naar e-mail server eindeloos verzenden. Hoewel deze berichten zich op deze manier kunnen vermaken voor een zeer lange tijd, is het geen goede zaak voor uw netwerkbandbreedte of de ESA verwerkingskosten.
Oplossing
Het identificeren van een mailloop, als je vermoedt dat dit het probleem is, is meestal vrij eenvoudig, hoewel je er een oogje in moet steken.
Log in op de opdrachtregel interface (CLI) van het systeem en geef een van deze opdrachten, of beide uit, omdat u de beste voordelen vindt:
grep "Subject" mail_logs
grep "Message-ID" mail_logs
Vooral voor de zoekfunctie op Message-ID, als u terugkerende instanties van precies dezelfde ID ziet, weet u dat u een mailloop hebt. Soms is dit echter niet voldoende, omdat een van de mailservers die hetzelfde bericht terugbellen, de berichtkop kan veranderen of verwijderen. Dus als je niets identificeerbaar krijgt met de Message-ID check, ga dan door en probeer de Onderwerpcontrole.
Veronderstellend dat u het het van een lus voorzien bericht door bericht-ID hebt kunnen vinden zult u ook andere informatie over het bericht en zijn ouderverbinding (ICID) willen te weten komen. Gezien de Message-ID en een MID in dezelfde logregel kunt u het volgende doen:
grep -e "MessageID_I_found" -e "MID 123456" mail_logs
Gezien de resulterende output kunt u de relevante ICID en DCID vinden en uitvoeren:
grep -e "MessageID_I_found" -e "MID 123456" -e "ICID 1234567" -e "DCID 2345767" mail_logs
Nu moet u de volledige verbinding hebben - berichttransactie en kunt u zien waar het vandaan kwam en waar het is geleverd aan (als dat al is gebeurd). Zodra u het het van een lus voorzien bericht hebt geïdentificeerd, uw volgende stap is een blik bij het bericht te krijgen zodat u het probleem kunt oplossen. Zonder het bevestigen van de oorzaak van de lijn, is het waarschijnlijk dat dit bericht en anderen zullen blijven in lijn of dat het probleem spoedig opnieuw zal voorkomen.
Maak een berichtfilter vergelijkbaar met dit filter:
loganddrop_looper:
if(header("Message-ID") == "MessageID_I_found") {
archive("looper");
drop();
}
Verbind nu die verandering en geef dit bevel uit om het bericht te controleren:
tail looper
Met de informatie die u kunt verkrijgen over het externe systeem door te kijken naar de maillogboeken, en andere informatie die u kunt verkrijgen door te kijken naar het bericht zelf, zou u moeten kunnen bepalen waar uw probleem is.
Hoe kunt u voorkomen dat mailloops ontstaan?
In complexe omgevingen kan dit moeilijk zijn - begrijpen hoe e-mail stroomt in uw omgeving en hoe een nieuwe netwerkwijziging, op de ESA of op een ander apparaat, zal beïnvloeden dat verkeer is belangrijk. Een veel voorkomende oorzaak van uitloop-maillussen is het verwijderen van de Ontvangen header. De ESA zal automatisch een mailloop detecteren en stoppen wanneer ze 100 Ontvangen headers in een bericht ziet, maar de ESA laat het verwijderen van deze header toe, wat vaak leidt tot een slechte mailloop. Tenzij er een *echt* goede reden is om, schakel de Ontvangen header niet uit of laat deze niet verwijderen.
Hieronder staat een filtervoorbeeld dat kan helpen bij het voorkomen of repareren van een mailloop:
External_Loop_Count:
if (header("X-ExtLoop1")) {
if (header("X-ExtLoopCount2")) {
if (header("X-ExtLoopCount3")) {
if (header("X-ExtLoopCount4")) {
if (header("X-ExtLoopCount5")) {
if (header("X-ExtLoopCount6")) {
if (header("X-ExtLoopCount7")) {
if (header("X-ExtLoopCount8")) {
if (header("X-ExtLoopCount9")) {
notify ('joe@example.com');
drop();
}
else {insert-header("X-ExtLoopCount9", "from
$RemoteIP");}}
else {insert-header("X-ExtLoopCount8", "from $RemoteIP");}}
else {insert-header("X-ExtLoopCount7", "from $RemoteIP");}}
else {insert-header("X-ExtLoopCount6", "from $RemoteIP");}}
else {insert-header("X-ExtLoopCount5", "from $RemoteIP");}}
else {insert-header("X-ExtLoopCount4", "from $RemoteIP");}}
else {insert-header("X-ExtLoopCount3", "from $RemoteIP");}}
else {insert-header("X-ExtLoopCount2", "from $RemoteIP");}}
else {insert-header("X-ExtLoop1", "1"); }