Configuració del reenviament SMTP dual
Gestionar diversos servidors de correu electrònic amb comptes d'usuari idèntics pot ser un repte. En aquest escenari, quan s'envia un correu electrònic a un usuari a example.com, els servidors James i Winmail l'han de rebre, assegurant-se que el contingut del correu electrònic no canvia.
Les solucions habituals, com ara la configuració de diversos registres MX al DNS, no són suficients, ja que només poden dirigir example.com a un sol servidor alhora. L'ús de Postfix per reenviar correus electrònics als dos servidors sense emmagatzematge local s'ha demostrat complex, donant lloc a solucions com ara scripts amb smtplib, que potser no són fiables. Explorem millors alternatives.
Comandament | Descripció |
---|---|
import smtplib | Importa la biblioteca Simple Mail Transfer Protocol per enviar correus electrònics amb Python. |
import sys | Importa el mòdul de funcions i paràmetres específics del sistema, utilitzat per obtenir arguments de línia d'ordres. |
from email.mime.text import MIMEText | Importa la classe MIMEText per crear missatges de correu electrònic basats en text. |
from email.mime.multipart import MIMEMultipart | Importa la classe MIMEMultipart per crear missatges de correu electrònic multipart. |
msg.attach(MIMEText('text', 'plain')) | Adjunta un cos de text sense format al missatge de correu electrònic. |
with smtplib.SMTP(server) as smtp | Obre una connexió al servidor SMTP i assegura que es tanca correctament després d'enviar el correu electrònic. |
postmap /etc/postfix/transport | Genera una base de dades binària a partir del fitxer de mapa de transport, utilitzat per Postfix per a l'encaminament del correu. |
systemctl reload postfix | Torna a carregar la configuració de Postfix sense aturar el servei, aplicant els canvis realitzats. |
Comprensió de la integració de Postfix i Python
Els scripts proporcionats estan dissenyats per reenviar correus electrònics a dos servidors SMTP, garantint que els dos servidors rebin el mateix correu electrònic. L'script de Python, , utilitza el biblioteca per gestionar l'enviament de correu electrònic. S'importa per obtenir arguments de línia d'ordres, com ara el remitent i el destinatari. L'script construeix el correu electrònic utilitzant from email.mime.text import MIMEText i per crear i adjuntar el cos del correu electrònic. A continuació, itera una llista de servidors SMTP i envia el correu electrònic a cadascú .
Al costat de Postfix, la configuració implica modificar el fitxer fitxer per definir el servei de transport personalitzat, , que utilitza l'script Python. El s'actualitza per incloure un mapa de transport, que s'especifica a /etc/postfix/transport. La comanda crea una base de dades binària a partir del mapa de transport, i aplica els canvis de configuració sense aturar el servei Postfix. Aquesta configuració garanteix que qualsevol correu electrònic enviat a example.com sigui processat per l'script de Python i reenviat als dos servidors SMTP.
Reenvia correus electrònics a diversos servidors SMTP amb Python
Utilitzant Python per gestionar el reenviament SMTP
# 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)
Configuració de Postfix per utilitzar l'script de Python
Configuració de Postfix per a reenviament de correu personalitzat
# /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
Millora de la funcionalitat de Postfix amb eines addicionals
Un altre enfocament per aconseguir reenviar correus electrònics a diversos servidors SMTP consisteix a utilitzar eines i configuracions addicionals de Postfix. Una d'aquestes eines és Postfix , que permet especificar diferents amfitrions de retransmissió en funció de l'adreça del remitent. Tot i que aquesta característica s'utilitza normalment per encaminar el correu sortint a través de diferents amfitrions de retransmissió, es pot adaptar al nostre cas d'ús amb una configuració creativa. Per exemple, una combinació de i es podria utilitzar per duplicar correus electrònics i reenviar-los a diferents adreces, que després s'envien als servidors respectius.
A més, integrant Postfix amb un filtre de correu com o podria proporcionar més flexibilitat en el maneig i l'encaminament de correus electrònics. Aquests filtres poden processar correus electrònics a mesura que passen per Postfix, la qual cosa permet que scripts o regles personalitzats dupliquin i reenviïn missatges a diverses destinacions. Tot i que aquesta configuració pot ser més complexa que utilitzar un script de Python senzill, pot oferir una major fiabilitat i escalabilitat per a entorns que requereixen capacitats de processament de correu electrònic robustes.
- Com puc configurar diversos registres MX al DNS?
- Malauradament, els registres DNS MX només admeten el mapeig a un servidor per nivell de prioritat, de manera que aquest enfocament no funcionarà per reenviar a diversos servidors simultàniament.
- Quina és la finalitat del directiva?
- El La directiva de Postfix especifica l'assignació d'adreces de correu electrònic o dominis a mètodes i destinacions de transport de correu específics.
- Llauna ajuda en aquest escenari?
- Sí, pot encaminar correus electrònics a través de diferents amfitrions de retransmissió en funció de l'adreça del remitent, però s'ha d'adaptar creativament per reenviar-los a diversos servidors.
- Com treballar a Postfix?
- El La directiva permet a Postfix assignar adreces de correu electrònic a altres adreces, permetent el reenviament i la redirecció de correus electrònics.
- Quin és el paper de ?
- El La directiva permet a Postfix afegir automàticament destinataris BCC als correus electrònics entrants, útil per duplicar missatges.
- Puc utilitzar amb Postfix per reenviar correus electrònics?
- Sí, es pot integrar amb Postfix per aplicar regles de filtratge i reenviament personalitzades, proporcionant més control sobre el processament del correu electrònic.
- Que es el fitxer utilitzat per?
- El El fitxer Postfix defineix els processos de lliurament de correu i les seves configuracions, inclosos els serveis de transport personalitzats.
- Com actualitzo el base de dades?
- Utilitzar el ordre per crear o actualitzar la base de dades binària des del fitxer de mapa de transport.
- Per què és important tornar a carregar Postfix?
- S'està tornant a carregar Postfix amb aplica canvis de configuració sense aturar el servei, assegurant un bon funcionament.
- Què és s'utilitza a Python?
- El La biblioteca de Python s'utilitza per enviar correus electrònics mitjançant SMTP, la qual cosa permet als scripts gestionar la transmissió de correu electrònic de manera programàtica.
La configuració de Postfix per reenviar missatges a diversos servidors SMTP implica una combinació d'scripts personalitzats i configuracions detallades de Postfix. Tot i que els intents inicials amb DNS o scripts de Python senzills poden no oferir la fiabilitat necessària, la integració de funcions i eines avançades de Postfix com Amavisd-new o Procmail pot proporcionar una solució més sòlida. Si configureu acuradament els mapes de transport, els mapes d'àlies virtuals i els mapes BCC del destinatari, podeu garantir un reenviament de missatges eficient i fluid als servidors James i Winmail. Aquest enfocament garanteix que la vostra infraestructura de correu electrònic segueixi sent resistent i capaç de gestionar requisits d'encaminament complexos.