Kuidas edastada e-kirju mitmele SMTP-serverile

Python and Postfix

Kahe SMTP edastamise seadistamine

Mitme identsete kasutajakontodega meiliserveri haldamine võib olla keeruline. Selle stsenaariumi korral, kui meil saadetakse aadressil example.com olevale kasutajale, peavad selle vastu võtma nii Jamesi kui ka Winmaili serverid, tagades, et meili sisu jääb muutumatuks.

Levinud lahendused, nagu näiteks mitme MX-kirje konfigureerimine DNS-is, ei toimi, kuna need saavad aadressi example.com korraga suunata ainult ühte serverisse. Postfixi kasutamine e-kirjade edastamiseks mõlemasse serverisse ilma kohaliku salvestusruumita on osutunud keeruliseks, mis on viinud selliste lahendusteni nagu smtplib-iga skriptimine, mis ei pruugi olla usaldusväärne. Uurime paremaid alternatiive.

Käsk Kirjeldus
import smtplib Impordib lihtsa meiliedastusprotokolli teegi Pythoni abil meilide saatmiseks.
import sys Impordib süsteemispetsiifiliste parameetrite ja funktsioonide mooduli, mida kasutatakse käsurea argumentide hankimiseks.
from email.mime.text import MIMEText Impordib klassi MIMEText tekstipõhiste meilisõnumite loomiseks.
from email.mime.multipart import MIMEMultipart Impordib klassi MIMEMultipart, et luua mitmeosalisi meilisõnumeid.
msg.attach(MIMEText('text', 'plain')) Lisab meilisõnumile lihtteksti sisu.
with smtplib.SMTP(server) as smtp Avab ühenduse SMTP-serveriga ja tagab, et see on pärast meili saatmist korralikult suletud.
postmap /etc/postfix/transport Loob transpordikaardi failist binaarandmebaasi, mida Postfix kasutab meili marsruutimiseks.
systemctl reload postfix Laadib Postfixi konfiguratsiooni uuesti ilma teenust peatamata, rakendades tehtud muudatusi.

Postfixi ja Pythoni integratsiooni mõistmine

Kaasasolevad skriptid on mõeldud meilide edastamiseks kahele SMTP-serverile, tagades, et mõlemad serverid saavad sama meili. Pythoni skript, , kasutab raamatukogu meili saatmisega tegelemiseks. See impordib käsurea argumentide (nt saatja ja saaja) hankimiseks. Skript konstrueerib e-kirja kasutades from email.mime.text import MIMEText ja meili sisu loomiseks ja manustamiseks. Seejärel kordab see SMTP-serverite loendit ja saadab e-kirjad kõigile, kes kasutavad .

Postfixi poolel hõlmab konfiguratsioon faili muutmist fail kohandatud transporditeenuse määratlemiseks, , mis kasutab Pythoni skripti. The faili värskendatakse, et lisada transpordikaart, mis on täpsustatud /etc/postfix/transport. Käsk loob transpordikaardilt binaarandmebaasi ja rakendab konfiguratsioonimuudatused ilma Postfixi teenust peatamata. See seadistus tagab, et Pythoni skript töötleb kõiki aadressile example.com saadetud e-kirju ja edastab need mõlemasse SMTP-serverisse.

Edastage meilid Pythoni abil mitmele SMTP-serverile

Pythoni kasutamine SMTP edastamise haldamiseks

# multi_forward.py
import smtplib
import sys
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
 
sender = sys.argv[1]
recipient = sys.argv[2]
 
def forward_email(sender, recipient):
    msg = MIMEMultipart()
    msg['From'] = sender
    msg['To'] = recipient
    msg['Subject'] = 'Forwarded email'
    msg.attach(MIMEText('This is the body of the email', 'plain'))
 
    # SMTP servers
    smtp_servers = ['james.example.com', 'winmail.example.com']
 
    for server in smtp_servers:
        with smtplib.SMTP(server) as smtp:
            smtp.sendmail(sender, recipient, msg.as_string())
 
if __name__ == '__main__':
    forward_email(sender, recipient)

Postfixi konfigureerimine Pythoni skripti kasutamiseks

Postfixi konfiguratsioon kohandatud meilide edastamiseks

# /etc/postfix/master.cf
multi_forward unix - n n - - pipe
  flags=Rhu user=nobody argv=/usr/local/bin/multi_forward.py ${sender} ${recipient}
 
# /etc/postfix/main.cf
transport_maps = hash:/etc/postfix/transport
 
# /etc/postfix/transport
example.com multi_forward:
 
# Update transport map
postmap /etc/postfix/transport
 
# Reload Postfix
systemctl reload postfix

Postfixi funktsionaalsuse täiustamine lisatööriistade abil

Teine meetod e-kirjade mitmele SMTP-serverile edastamiseks hõlmab täiendavate Postfixi tööriistade ja konfiguratsioonide kasutamist. Üks selline tööriist on Postfix , mis võimaldab määrata saatja aadressi alusel erinevaid relee hoste. Kuigi seda funktsiooni kasutatakse tavaliselt väljamineva kirja suunamiseks läbi erinevate edastusmasinate, saab seda meie kasutusjuhtumite jaoks kohandada teatud loomingulise konfiguratsiooniga. Näiteks kombinatsioon ja saab kasutada e-kirjade dubleerimiseks ja erinevatele aadressidele edastamiseks, mis seejärel vastavatesse serveritesse suunatakse.

Lisaks Postfixi integreerimine meilifiltriga nagu või võiks pakkuda suuremat paindlikkust meilide käsitlemisel ja suunamisel. Need filtrid saavad töödelda e-kirju, kui need läbivad Postfixi, võimaldades kohandatud skriptidel või reeglitel sõnumeid paljundada ja mitmesse sihtkohta edastada. Kuigi see seadistus võib olla keerulisem kui lihtsa Pythoni skripti kasutamine, võib see pakkuda suuremat töökindlust ja mastaapsust keskkondades, mis nõuavad tugevat meilitöötlusvõimet.

  1. Kuidas saan DNS-is konfigureerida mitut MX-kirjet?
  2. Kahjuks toetavad DNS-i MX-kirjed prioriteeditaseme kohta ainult ühe serveriga vastendamist, nii et see lähenemisviis ei tööta korraga mitmesse serverisse edastamiseks.
  3. Mis on eesmärk direktiiv?
  4. The Postfixi direktiiv määrab e-posti aadresside või domeenide vastendamise kindlate postiedastusmeetodite ja -sihtkohtadega.
  5. Saab abi selles stsenaariumis?
  6. Jah, suudab meilisõnumeid suunata läbi erinevate edastusmasinate saatja aadressi alusel, kuid seda tuleb mitmesse serverisse edastamiseks loominguliselt kohandada.
  7. Kuidas kas töötate Postfixis?
  8. The direktiiv võimaldab Postfixil vastendada e-posti aadresse teistele aadressidele, võimaldades meilide edastamist ja ümbersuunamist.
  9. Mis on roll ?
  10. The direktiiv võimaldab Postfixil automaatselt lisada sissetulevatele e-kirjadele BCC adressaate, mis on kasulik kirjade paljundamiseks.
  11. Kas ma võin kasutada Postfixiga meilide edastamiseks?
  12. Jah, saab integreerida Postfixiga, et rakendada kohandatud filtreerimis- ja edastamisreegleid, pakkudes suuremat kontrolli meilitöötluse üle.
  13. Mis on jaoks kasutatud faili?
  14. The Postfixi fail määratleb postiedastusprotsessid ja nende konfiguratsioonid, sealhulgas kohandatud transporditeenused.
  15. Kuidas värskendada andmebaasi?
  16. Kasuta käsk binaarandmebaasi loomiseks või värskendamiseks transpordikaardi failist.
  17. Miks on Postfixi uuesti laadimine oluline?
  18. Postfixi uuesti laadimine koos rakendab konfiguratsioonimuudatusi ilma teenust peatamata, tagades sujuva töö.
  19. Mis on mida kasutatakse Pythonis?
  20. The Pythoni raamatukogu kasutatakse meilide saatmiseks SMTP kaudu, võimaldades skriptidel meiliedastust programmiliselt käsitleda.

Postfixi seadistamine sõnumite edastamiseks mitmele SMTP-serverile hõlmab kohandatud skriptide ja üksikasjalike Postfixi konfiguratsioonide kombinatsiooni. Kuigi algsed katsed kasutada DNS-i või lihtsaid Pythoni skripte ei pruugi pakkuda vajalikku töökindlust, võib täiustatud Postfixi funktsioonide ja tööriistade (nt Amavisd-new või Procmail) integreerimine pakkuda tugevamat lahendust. Konfigureerides hoolikalt transpordikaarte, virtuaalseid pseudonüümikaarte ja adressaatide BCC-kaarte, saate tagada sujuva ja tõhusa sõnumite edastamise nii Jamesi kui ka Winmaili serveritesse. See lähenemisviis tagab, et teie e-posti infrastruktuur jääb vastupidavaks ja suudab hakkama saada keerukate marsruutimise nõuetega.