Подешавање двоструког СМТП прослеђивања
Управљање вишеструким серверима е-поште са идентичним корисничким налозима може бити изазовно. У овом сценарију, када се е-пошта пошаље кориснику на екампле.цом, треба да је прими и јамес и винмаил сервер, обезбеђујући да садржај е-поште остане непромењен.
Уобичајена решења, као што је конфигурисање више МКС записа у ДНС-у, недостају јер могу да усмере екампле.цом само на један сервер у исто време. Коришћење Постфик-а за прослеђивање е-порука на оба сервера без локалног складишта показало се сложеним, што је довело до решења попут скриптовања помоћу смтплиб-а, што можда није поуздано. Хајде да истражимо боље алтернативе.
Цомманд | Опис |
---|---|
import smtplib | Увози библиотеку Симпле Маил Трансфер Протоцол за слање е-поште користећи Питхон. |
import sys | Увози системске специфичне параметре и модул функција, који се користе за добијање аргумената командне линије. |
from email.mime.text import MIMEText | Увози класу МИМЕТект за креирање текстуалних порука е-поште. |
from email.mime.multipart import MIMEMultipart | Увози класу МИМЕМултипарт за креирање вишеделних порука е-поште. |
msg.attach(MIMEText('text', 'plain')) | Прилаже тело обичног текста уз поруку е-поште. |
with smtplib.SMTP(server) as smtp | Отвара везу са СМТП сервером и осигурава да је исправно затворена након слања е-поште. |
postmap /etc/postfix/transport | Генерише бинарну базу података из датотеке транспортне мапе, коју користи Постфик за рутирање поште. |
systemctl reload postfix | Поново учитава Постфик конфигурацију без заустављања услуге, примењујући све промене. |
Разумевање Постфик и Питхон интеграције
Достављене скрипте су дизајниране да прослеђују е-пошту на два СМТП сервера, обезбеђујући да оба сервера примају исту е-пошту. Питхон скрипт, multi_forward.py, користи import smtplib библиотека за руковање слањем е-поште. Увози sys да добијете аргументе командне линије, као што су пошиљалац и прималац. Скрипта конструише е-пошту користећи from email.mime.text import MIMEText и from email.mime.multipart import MIMEMultipart да бисте креирали и приложили тело е-поште. Затим прелази преко листе СМТП сервера и шаље е-пошту сваком од њих with smtplib.SMTP(server) as smtp.
На страни Постфик-а, конфигурација укључује модификацију /etc/postfix/master.cf фајл за дефинисање прилагођене услуге транспорта, multi_forward, који користи Питхон скрипту. Тхе /etc/postfix/main.cf датотека се ажурира тако да укључује транспортну мапу, која је наведена у /etc/postfix/transport. Команда postmap /etc/postfix/transport креира бинарну базу података из транспортне мапе, и systemctl reload postfix примењује промене конфигурације без заустављања услуге Постфик. Ово подешавање осигурава да се свака е-пошта послата на екампле.цом обрађује Питхон скриптом и прослеђује на оба СМТП сервера.
Проследите е-пошту на више СМТП сервера помоћу Питхон-а
Коришћење Питхон-а за руковање СМТП прослеђивањем
# 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)
Конфигурисање Постфик-а за коришћење Питхон скрипте
Постфик конфигурација за прилагођено прослеђивање поште
# /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
Побољшање Постфик функционалности помоћу додатних алата
Други приступ за постизање прослеђивања е-поште на више СМТП сервера укључује коришћење додатних Постфик алата и конфигурација. Један такав алат је Постфик sender_dependent_relayhost_maps, који омогућава навођење различитих хостова релеја на основу адресе пошиљаоца. Иако се ова функција обично користи за усмеравање одлазне поште кроз различите релејне хостове, може се прилагодити за наш случај употребе уз неку креативну конфигурацију. На пример, комбинација од virtual_alias_maps и recipient_bcc_maps може се користити за дуплирање е-порука и прослеђивање на различите адресе, које се затим усмеравају на одговарајуће сервере.
Поред тога, интеграција Постфик-а са филтером за пошту као што је Amavisd-new или Procmail може пружити већу флексибилност у руковању и усмеравању е-поште. Ови филтери могу да обрађују е-поруке док пролазе кроз Постфик, омогућавајући прилагођеним скриптама или правилима да дуплирају и прослеђују поруке на више одредишта. Иако ово подешавање може бити сложеније од коришћења једноставне Питхон скрипте, оно може понудити већу поузданост и скалабилност за окружења која захтевају робусне могућности обраде е-поште.
Уобичајена питања и решења за Постфик прослеђивање е-поште
- Како могу да конфигуришем више МКС записа у ДНС-у?
- Нажалост, ДНС МКС записи подржавају само мапирање на један сервер по нивоу приоритета, тако да овај приступ неће радити за прослеђивање на више сервера истовремено.
- Која је сврха transport_maps директива?
- Тхе transport_maps директива у Постфик-у специфицира мапирање адреса е-поште или домена на одређене методе и одредишта транспорта поште.
- Моћи sender_dependent_relayhost_maps помоћи у овом сценарију?
- Да, sender_dependent_relayhost_maps може да усмерава е-пошту кроз различите релејне хостове на основу адресе пошиљаоца, али мора бити креативно прилагођена за прослеђивање на више сервера.
- Како се virtual_alias_maps радити у Постфик-у?
- Тхе virtual_alias_maps директива омогућава Постфик-у да мапира адресе е-поште на друге адресе, омогућавајући прослеђивање и преусмеравање е-поште.
- Која је улога recipient_bcc_maps?
- Тхе recipient_bcc_maps директива дозвољава Постфик-у да аутоматски додаје БЦЦ примаоце у долазне е-поруке, што је корисно за дуплирање порука.
- Могу ли да користим Amavisd-new са Постфик-ом за прослеђивање е-поште?
- Да, Amavisd-new може се интегрисати са Постфик-ом за примену прилагођених правила филтрирања и прослеђивања, пружајући већу контролу над обрадом е-поште.
- Шта је master.cf фајл који се користи за?
- Тхе master.cf датотека у Постфик-у дефинише процесе испоруке поште и њихове конфигурације, укључујући прилагођене услуге транспорта.
- Како да ажурирам transport map база података?
- Користити postmap /etc/postfix/transport наредба за креирање или ажурирање бинарне базе података из датотеке транспортне мапе.
- Зашто је поновно учитавање Постфик-а важно?
- Поновно учитавање Постфик-а са systemctl reload postfix примењује промене конфигурације без заустављања услуге, обезбеђујући несметан рад.
- Шта је smtplib користи се за Питхон?
- Тхе smtplib библиотека у Питхон-у се користи за слање е-поште путем СМТП-а, омогућавајући скриптама да програмски управљају преносом е-поште.
Завршна размишљања о прослеђивању дуал сервера
Подешавање Постфик-а за прослеђивање порука на више СМТП сервера укључује комбинацију прилагођених скрипти и детаљних Постфик конфигурација. Иако почетни покушаји коришћења ДНС-а или једноставних Питхон скрипти можда неће понудити потребну поузданост, интегрисање напредних Постфик функција и алата као што су Амависд-нев или Процмаил може пружити робусније решење. Пажљивим конфигурисањем транспортних мапа, виртуелних алиас мапа и БЦЦ мапа примаоца, можете обезбедити беспрекорно и ефикасно прослеђивање порука и на јамес и винмаил сервере. Овај приступ осигурава да ваша инфраструктура е-поште остане отпорна и способна да се носи са сложеним захтевима за рутирање.