Postfix mail queue menedzsment

Postfix mail queue menedzsment

Hogyan tudom megnézni, milyen emailek várakoznak kiküldésre? Milyen levelek kerültek elutasításra és mi ennek az oka?

A technológia előrehaladtával, továbbra sem lehetünk biztosak, hogy az elküldött email-ünk megérkezett-e a címzetthez, vagy a spam, vírusírtó, tűzfal, kéretlen levél szűrő rengetegén át tudott-e jutni.

Tehát szeretnénk megtudni, mennyi és milyen email ragadt a mail queue-ban, milyen levelek ezek és miért volt sikertelen a kiküldésük. Egy linux rendszergazdának fontos információt is hordozhat, mert egy tömeges spamet küldő weboldal miatt az üzemeltetett linux szerver IP címét blokkolhatják a nagyobb levelező szerverek.

A postfix mail queue lekérdezése, kiküldendő emailek státusza

# qshape
       T  5 10 20 40 80 160 320 640 1280 1280+
TOTAL  0  0  0  0  0  0   0   0   0    0     0

A qshape parancs segítségével megkapjuk, a postfix mail queue-ban épp mennyi levél várakozik. Itt magas forgalmú szerver esetén (ez a magas forgalom lehet egy spam áradat hatása is) kiküldésre is várakozhatnak levelek, de a már visszautasított emailek is itt várakoznak.

Szerencsés esetben a kimenetünk olyan, mint amit fent láthatnak.

Amennyiben a visszautasított emailek számára vagyunk kíváncsiak, a qshape deferred parancs segítségével kapjuk meg, domain nevenként (levelező szerverenként):

# qshape deferred
                    T  5 10 20 40 80 160 320 640 1280 1280+
             TOTAL 10  0  0  0  0  0   0   0   2    0     8
         gmail.com 10  0  0  0  0  0   0   0   2    0     8

 A mail queue-ban lévő emailek vizsgálata

A várakozó sorban lévő email-ek ellenőrzése, vizsgálata, hogyan tudom kilistázni, elolvasni a mail queue-ben lévő leveleket?

Az összes level listázása a mailq vagy a postqueue -p paranccsal történhet, és ehhez hasonló kimenetet kapunk:

3F25925ADB8     1688 Fri Apr 24 17:32:20  test1@example.com
            (connect to m.aaagmail.com[xxx.xxx.xxx.xxx]:25: Connection refused)
                                         borwec1@m.aaagmail.com

Kiemeletem a Queue ID-t, az email egyedi azonosítóját. Ezen kívül megtudjuk a levél méretét, a küldés idejét, a küldő email címet, röviden a probléma okát, és a címzettet.

Most például kiolvasható, hogy a borwec1@m.aaagmail.com email címhez tartozó m.aaagmail.com domain névnek, m.aaagmail.com az MX rekordja, tehát a levelező szerverként ez van beállítva, de a 25-ös portra történő csatlakozás vissza lett utasítva. Egy linux rendszergazda tudja, hogy ennek számos oka lehet, például:

  • elírták az email címet
  • hibás a domain név MX beállítása
  • rossz helyre mutat a levelező szerver IP címe
  • nincs az adott szerver 25-ös portján levelezés kiszolgálás
  • vagy csak épp foglalt a port egy DoS támadás okán.
  • vagy a mi IP címünkről nem fogad a szerver levelet.

Pont ezen okok miatt marad a queue-ban a küldendő email, hogy újra tudja próbálni a küldést.

A mail queue-ban lévő email elolvasása

Sosem igazán jó, ha a queue-ban levelek várakoznak, így a szükségtelenül ott várakozókat törölnénk, de ehhez szeretnénk beleolvasni a mail queue-s emailekbe. Ez megtehetjük a postcat -q, postcat -qv paranccsal. Természetesen a v paraméter itt is a verbose opció, tehát részletesebb adatokat kapunk. Egy példa válaszra:

root@test1:~# postcat -q 3F25925ADB8
*** ENVELOPE RECORDS deferred/3/3F25925ADB8 ***
message_size:            1688             612               1               0            1688
message_arrival_time: Fri Apr 24 17:32:20 2015
create_time: Fri Apr 24 17:32:20 2015
named_attribute: rewrite_context=local
sender: test1@example.com
named_attribute: encoding=8bit
named_attribute: log_client_name=localhost
named_attribute: log_client_address=127.0.0.1
named_attribute: log_client_port=41051
named_attribute: log_message_origin=localhost[127.0.0.1]
named_attribute: log_helo_name=localhost
named_attribute: log_protocol_name=ESMTP
named_attribute: client_name=localhost
named_attribute: reverse_client_name=localhost
named_attribute: client_address=127.0.0.1
named_attribute: client_port=41051
named_attribute: helo_name=localhost
named_attribute: protocol_name=ESMTP
named_attribute: client_address_type=2
named_attribute: dsn_orig_rcpt=rfc822;borwec1@m.aaagmail.com
original_recipient: borwec1@m.aaagmail.com
recipient: borwec1@m.aaagmail.com
*** MESSAGE CONTENTS deferred/3/3F25925ADB8 ***
Received: from localhost (localhost [127.0.0.1])
    by exmaple.com (Postfix) with ESMTP id 3F25925ADB8
    for <borwec1@m.aaagmail.com>; Fri, 24 Apr 2015 17:32:20 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at srv3.neunet.hu
Received: from example.com ([127.0.0.1])
    by localhost (example.com [127.0.0.1]) (amavisd-new, port 10024)
    with ESMTP id XWIxIaiwAOlx for <borwec1@m.aaagmail.com>;
    Fri, 24 Apr 2015 17:32:19 +0200 (CEST)
Received: by example.com (Postfix, from userid 5093)
    id 7F52C25ADB2; Fri, 24 Apr 2015 17:32:19 +0200 (CEST)
To: borwec1@m.aaagmail.com
Subject: =?utf-8?Q?M=C3=A1solat_-_Abilify_Medicine_Company?=
X-PHP-Originating-Script: 5093:phpmailer.php
Date: Fri, 24 Apr 2015 17:32:19 +0200
From: AGSGSGA <info@example.com>
Message-ID: <972a6c9e1492cc6c6b3476758cf3f2d2@www.example.com>
X-Priority: 3
X-Mailer: PHPMailer [version 1.73]
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="utf-8"

Másolat -

Ez egy érdeklődő e-mail a(z) http://www.example.com/ webhelyről, melynek feladója:
Christyol <borwec1@m.aaagmail.com>

Women's Health Clinic Katy  Lopressor Black Box Warning Drugs . 3d puzzle plan Pro Banthine Migrate  Mexico Adipex Online Pharmacy List Of The Best Acai Berry Supplements Using Ativan For Alcohol Withdrawal Benzodiazepines Allergy Time Table Stevens Johnson Syndrome And Levaquin . Crc Colon Cancer Singulair 10 Mg Current Antifungal Prescription Fluconazole Questions Overdose Oxycodone Online No Prescription Hydrocodone Vicodin. Using A Spacer For Diabetes And Sexual Side Effects Xanax Addiction Tylenol Cold Daytime How To Make Buy Viagra For Kids .

*** HEADER EXTRACTED deferred/3/3F25925ADB8 ***
named_attribute: encoding=8bit
*** MESSAGE FILE END deferred/3/3F25925ADB8 ***
root@test1:~#

Mint láthatjuk ez egy weboldalon keresztül küldött email, a spam küldők a másolat küldésén keresztül igyekeznek spam emailt küldeni.

Hogy küldhetjük újra a levelet a postfix mail queue-ből?

Amennyiben a hiba elhárult, ami azt okozta, hogy az emailt nem tudtuk kézbesíteni, akkor újra próbálhatjuk küldeni az emailt. Ezt a postqueue -i paranccsal tudjuk megtenni, például:

postqueue -i 75AE125ADBA

Küldés közben a levelező szerverünk napló bejegyzéseit olvashatjuk, hogy meg tudjuk állapítani, hogy sikeres lett-e az újraküldés:

tail -f /var/log/mail.{err,log}
Az összes email újraküldése a postfix-ben várakozó levelekből
postqueue -f

A parancs hatására az összes várakozó levelet megpróbáljuk újra kiküldeni, ürítsük a queue-t.  Ennek akkor van értelme, ha például átmenetileg a mi szerverünk volt tiltólistán és a tiltás feloldása után az emiatt várakozó emaileket akarjuk kiküldeni, amik maguktól órákkal, napokkal később próbálkoznának újra.

A várakozó emailek törlése a mail queue-ból

Amennyiben olyan emailek várakoznak csak, amelyeket, nem akarunk kiküldeni, akkor törölni szeretnénk a nemkívánatos leveletek.

Az összes elutasított email törlése
postsuper -d ALL deferred

Ez az eset állhat fenn például, ha egy osztott webszerver egyik weboldalán keresztül küld ki egy spammer akár több ezer levelet, ami egyrészt lefoglalja a szerverünk, másrészt kitilthatják a szerverek a levél fogadást az adott IP címről, így nagyon sok levél várakozhat, illetve visszapattanhat.

Egy konkrét azonosítójú levél törlése

Ha csak egy levél ismételt kiküldését akarjuk megszakítani:

postsuper -d 75AE125ADBA
Bizonyos minta szerinti levelek törlése

A korábban már többször említett feltört weboldalon keresztüli tömeges email kiküldés esetén például a feladó szerint szeretnénk szűrni, majd törölni a levelet, ezt a hasonlóképp megtehetjük egy egyszerű shell scripttel:

mailq | tail -n +2 | grep -v '^ *(' | awk  'BEGIN { RS = "" } { 
if ($7 == "TEST1@EXAMPLE.COM" && $9 == "") print $1 } ' | tr -d '*!' 
| postsuper -d -

Esetünkben a mailq parancs kimenetéből feldolgozzuk az email címeket tartalmazó sorokat, kiválogatjuk a test1@exmaple.com feladókat és a hozzájuk tartozó Queue ID-t átadjuk a postsuper -d parancsnak.

Példánkban a $7 a feladó, $8 a címzett, ha az alapján szeretnénk a törlést végezni.

 

No Comments.

Leave a Reply