Vraag Postfix: verander de afzender in wachtrijberichten


Na een volledige herinstallatie kregen we een probleem met de configuratie: het adres van de afzender was fout en sommige ontvangers (mailservers) verwierpen deze.

Er zitten dus een aantal mails vast in de Postfix-wachtrij.

In het ideale geval zou een wijziging van het adres van de afzender direct in de in de wachtrij geplaatste mails en vervolgens het doorspoelen van de wachtrij optimaal zijn.

ik probeerde dit antwoord die dit probleem aanpakt. Maar berichten lijken niet gemakkelijk aanpasbaar in de versie die ik heb (2.11.0).

Er is bijvoorbeeld geen /var/spool/mqueue maar, in plaats daarvan /var/spool/postfix/...

active
bounce
corrupt
defer
deferred
dev
etc
flush
hold
incoming
lib
maildrop
pid
private
public
saved
trace
usr

en het richtsnoer van belang is deferred. Ik heb geprobeerd om een ​​paar bestanden te wijzigen die daar het verkeerde domein veranderden met de juiste (en zorgde ervoor dat alleen die werden gewijzigd).

Maar toen werden die mails verplaatst naar corrupt, wat betekent dat een eenvoudige tekstverandering niet lijkt te werken (gedaan met vi).

Een andere schonere manier om de afzender in wachtrijen te wijzigen?


8
2017-08-22 02:28


oorsprong




antwoorden:


ik probeerde deze answer dat dit probleem aanpakt. Maar berichten lijken niet gemakkelijk aanpasbaar in de versie die ik heb (2.11.0).

Er is bijvoorbeeld geen / var / spool / mqueue dir, maar in plaats daarvan / var / spool / postfix / ...

Ik wil twee dingen verduidelijken.

  • Ten eerste werd dat antwoord toegepast op sendmail NOT postfix.
  • Ten tweede werd het direct manipuleren van raw-queue-bestanden helemaal niet ondersteund.

Dus je hebt hier verschillende opties

1. parameter smtp_generic_maps

Dit antwoord is hierop geïnspireerd uitstekend antwoord. Het zal oud-adres automatisch naar nieuw adres herschrijven. U kunt het bestand definiëren om het oude adres naar het nieuwe adres te mappen.

/etc/postfix/main.cf:
    smtp_generic_maps = hash:/etc/postfix/generic

/etc/postfix/generic:
    account@localdomain.example.com       account@example.com

Vergeet niet om postmap /etc/postfix/generic en loop postfix reload

  • ondersteboven: U hoeft het bericht niet opnieuw te verzenden
  • nadeel: Postfix herschrijft afzender en ontvanger adres die matching account@localdomain.example.com.

2. sender_canonical_address

Om het nadeel van de eerste optie te overwinnen, kunt u gebruiken sender_canonical_maps. Deze oplossing gebaseerd op Suggestie voor Postfix-auteur. Hetzelfde als de eerste optie, u kunt het bestand definiëren om het oude adres naar het nieuwe adres te mappen.

/etc/postfix/main.cf:
    sender_canonical_maps = hash:/etc/postfix/sender_canonical

/etc/postfix/sender_canonical:
    account@localdomain.example.com       account@example.com

Rennen postmap /etc/postfix/sender_canonical ren dan postfix reload. Vanwege de stroom van de postfix-wachtrij moet u de betreffende wachtrij opnieuw instellen met een opdracht postsuper -r queueid

  • ondersteboven: Postfix herschrijft het adres van de ontvanger niet.
  • nadeel: U moet alle betrokken berichten opnieuw genereren. Maar je kunt alle uitgesteld met één opdracht opnieuw toewijzen postsuper -r ALL deferred

3. directe manipulatie van de postfix-wachtrij

Dit zijn handmatige oude manieren om de wachtrij te wijzigen voor geavanceerde verwerking. Dit antwoord kwam van mailinglijsten voor postfix-gebruikers

Kortom

  • Wachtrij extraheren

    # postsuper -h queueid
    # postcat -qbh queueid > tempfile.eml
    # vi tempfile.eml
    
  • Dien rij opnieuw in en verwijder oude wachtrij

    # sendmail -f $sender $recipient < tempfile.eml
    # postsuper -d queueid
    

Raadpleeg voor documentatie over het bovenstaande commando deze pagina

Notitie:
Originele oplossing van mailinglijsten voor postfix-gebruikers, gebruik postcat -q queueid >tempfile om wachtrij uit te pakken. Deze opdracht extraheert de header, body en meta-informatie van de wachtrij. Als puntige azendale hieronder, sendmailzal weigeren om deze ongeldige e-mail te verzenden vanwege meta-informatie.

Gebruik makend van -bh parameter naast q parameter zorgt ervoor dat postcat de uitvoer alleen filtert op header en body, zonder meta-informatie. Een bijkomend voordeel hiervan is dat het tijdelijke bestand in het formaat is dat de meeste e-mailclients herkennen als .eml-indeling, zodat u het resulterende (bewerkte) bericht kunt bekijken.


17
2017-08-22 09:35



Zeer grondig antwoord, bedankt. - Ring Ø
Ik probeerde dit, en in ieder geval met mijn versie van de postfix leek het niet het bericht te verzenden totdat ik iets dergelijks gebruikte postcat -qbh queueid >tempfile. (Kant voordeel: het is dan in .lem formaat.) Als ik het net heb gebruikt -q het leek niets te doen toen ik sendmail uitvoerde. Postfix-versie 2.8.4. Kan iemand dit bevestigen? Als dit het geval is, laten we dit antwoord bewerken. - Azendale
Hallo @Azendale, ik test de derde oplossing opnieuw en ja, we hebben het nodig qbh om het te laten werken. De uitleg toevoegen in het bijgewerkte antwoord ... :) - masegaloeh
Bedankt ! Was op zoek naar een derde oplossing zoals. het is gewoon perfect! - JazZ