Dvigubo SMTP persiuntimo nustatymas
Valdyti kelis el. pašto serverius su identiškomis vartotojų abonementais gali būti sudėtinga. Pagal šį scenarijų, kai el. laiškas siunčiamas vartotojui adresu example.com, jį turi gauti ir james, ir winmail serveriai, užtikrinant, kad el. pašto turinys liktų nepakitęs.
Įprasti sprendimai, pvz., kelių MX įrašų konfigūravimas DNS sistemoje, yra netinkami, nes jie vienu metu gali nukreipti example.com tik į vieną serverį. Naudoti „Postfix“ el. laiškams persiųsti į abu serverius be vietinės saugyklos pasirodė sudėtinga, todėl atsirado tokių sprendimų kaip scenarijų kūrimas naudojant „smtplib“, kurie gali būti nepatikimi. Panagrinėkime geresnes alternatyvas.
komandą | apibūdinimas |
---|---|
import smtplib | Importuoja paprasto pašto perdavimo protokolo biblioteką el. laiškų siuntimui naudojant Python. |
import sys | Importuoja sistemos parametrų ir funkcijų modulį, naudojamą komandinės eilutės argumentams gauti. |
from email.mime.text import MIMEText | Importuoja MIMEText klasę, kad sukurtų tekstinius el. pašto pranešimus. |
from email.mime.multipart import MIMEMultipart | Importuoja MIMEMultipart klasę, kad sukurtų kelių dalių el. laiškus. |
msg.attach(MIMEText('text', 'plain')) | Prie el. laiško prideda paprasto teksto turinį. |
with smtplib.SMTP(server) as smtp | Atidaro ryšį su SMTP serveriu ir užtikrina, kad jis tinkamai uždarytas išsiuntus el. laišką. |
postmap /etc/postfix/transport | Sugeneruoja dvejetainę duomenų bazę iš transportavimo žemėlapio failo, kurią Postfix naudoja pašto nukreipimui. |
systemctl reload postfix | Iš naujo įkelia „Postfix“ konfigūraciją nestabdydamas paslaugos, taikydamas visus atliktus pakeitimus. |
„Postfix“ ir „Python“ integracijos supratimas
Pateikti scenarijai skirti el. laiškams persiųsti į du SMTP serverius, užtikrinant, kad abu serveriai gautų tą patį el. laišką. Python scenarijus, , naudoja biblioteka el. laiškų siuntimui tvarkyti. Tai importuoja Norėdami gauti komandinės eilutės argumentus, pvz., siuntėjas ir gavėjas. Scenarijus sukuria el. laišką naudodamas from email.mime.text import MIMEText ir el. laiško turiniui sukurti ir pridėti. Tada jis kartojasi per SMTP serverių sąrašą ir siunčia el. laišką kiekvienam naudojant .
„Postfix“ pusėje konfigūracija apima modifikavimą failą, skirtą pasirinktinei transporto paslaugai apibrėžti, , kuris naudoja Python scenarijų. The failas atnaujinamas, kad būtų įtrauktas transporto žemėlapis, kuris nurodytas /etc/postfix/transport. Komanda sukuria dvejetainę duomenų bazę iš transporto žemėlapio ir taiko konfigūracijos pakeitimus nestabdydamas „Postfix“ paslaugos. Ši sąranka užtikrina, kad bet koks el. laiškas, išsiųstas adresu example.com, būtų apdorojamas Python scenarijaus ir persiunčiamas į abu SMTP serverius.
Persiųskite el. laiškus į kelis SMTP serverius naudodami Python
Python naudojimas SMTP persiuntimui valdyti
# 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)
„Postfix“ konfigūravimas naudoti Python scenarijų
„Postfix“ konfigūracija, skirta pasirinktiniam laiškų persiuntimui
# /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
„Postfix“ funkcionalumo tobulinimas naudojant papildomus įrankius
Kitas būdas persiųsti el. laiškus į kelis SMTP serverius apima papildomų Postfix įrankių ir konfigūracijų naudojimą. Vienas iš tokių įrankių yra Postfix's , kuri leidžia nurodyti skirtingus perdavimo pagrindinius kompiuterius pagal siuntėjo adresą. Nors ši funkcija paprastai naudojama nukreipiant siunčiamą paštą per skirtingus perdavimo pagrindinius kompiuterius, ji gali būti pritaikyta mūsų naudojimo atvejui su tam tikra kūrybine konfigūracija. Pavyzdžiui, derinys ir el. laiškams kopijuoti ir persiųsti skirtingais adresais, kurie vėliau nukreipiami į atitinkamus serverius.
Be to, Postfix integravimas su pašto filtru, pvz arba galėtų suteikti daugiau lankstumo tvarkant ir nukreipiant el. Šie filtrai gali apdoroti el. laiškus, kai jie praeina per „Postfix“, todėl pasirinktiniai scenarijai arba taisyklės gali kopijuoti ir persiųsti pranešimus į kelias paskirties vietas. Nors ši sąranka gali būti sudėtingesnė nei naudojant paprastą Python scenarijų, ji gali pasiūlyti didesnį patikimumą ir mastelį aplinkose, kurioms reikalingos tvirtos el. pašto apdorojimo galimybės.
- Kaip galiu sukonfigūruoti kelis MX įrašus DNS?
- Deja, DNS MX įrašai palaiko tik susiejimą su vienu serveriu vienu prioriteto lygiu, todėl šis metodas neveiks, kai vienu metu persisiunčiama į kelis serverius.
- Koks yra tikslas direktyva?
- The „Postfix“ direktyva nurodo el. pašto adresų arba domenų susiejimą su konkrečiais pašto transportavimo būdais ir paskirties vietomis.
- Gali padėti šiuo atveju?
- taip, gali nukreipti el. laiškus per skirtingus perdavimo kompiuterius pagal siuntėjo adresą, tačiau jį reikia kūrybiškai pritaikyti persiuntimui į kelis serverius.
- Kaip dirbti Postfix?
- The direktyva leidžia „Postfix“ susieti el. pašto adresus su kitais adresais, kad būtų galima persiųsti ir peradresuoti el.
- Koks yra vaidmuo ?
- The direktyva leidžia Postfix automatiškai pridėti BCC gavėjus prie gaunamų el. laiškų, naudingų laiškams kopijuoti.
- Ar galiu naudoti su Postfix el. pašto peradresavimui?
- taip, gali būti integruotas su Postfix, kad būtų taikomos tinkintos filtravimo ir persiuntimo taisyklės, leidžiančios geriau valdyti el. pašto apdorojimą.
- Kas yra naudojamas failas?
- The Failas Postfix apibrėžia pašto pristatymo procesus ir jų konfigūraciją, įskaitant pasirinktines transportavimo paslaugas.
- Kaip atnaujinti duomenų bazėje?
- Naudoti komanda sukurti arba atnaujinti dvejetainę duomenų bazę iš transportavimo žemėlapio failo.
- Kodėl svarbu iš naujo įkelti Postfix?
- Iš naujo įkeliama Postfix su taiko konfigūracijos pakeitimus nestabdydamas paslaugos, užtikrindamas sklandų veikimą.
- Kas yra naudojamas Python?
- The Python biblioteka naudojama el. laiškams siųsti per SMTP, todėl scenarijai programiškai tvarko el. pašto siuntimą.
„Postfix“ nustatymas, kad pranešimai būtų persiųsti į kelis SMTP serverius, apima pasirinktinių scenarijų ir išsamių „Postfix“ konfigūracijų derinį. Nors pradiniai bandymai naudoti DNS arba paprastus Python scenarijus gali nepasiūlyti reikiamo patikimumo, pažangių Postfix funkcijų ir įrankių, pvz., Amavisd-new arba Procmail, integravimas gali būti patikimesnis sprendimas. Kruopščiai sukonfigūruodami transportavimo žemėlapius, virtualių slapyvardžių žemėlapius ir gavėjų BCC žemėlapius, galite užtikrinti sklandų ir efektyvų pranešimų persiuntimą tiek į „James“, tiek į „Winmail“ serverius. Šis metodas užtikrina, kad jūsų el. pašto infrastruktūra išliks atspari ir gali patenkinti sudėtingus maršruto parinkimo reikalavimus.