Multiple Postfix Instance
گاهی اوقات بر روی یک سرور فیزیکی احتیاج داریم که تعداد زیادی ایمیل با استفاده از ip های مختلف بفرستیم. در اینگونه موارد یا باید سرور postfix خود را به گونهای تنظیم کنیم که بتواند در هنگم ارسال ایمیلها از چند ip استفاده کند و ایمیلها را ارسال کند یا باید چند مولفه به صورت موازی روی سرورمان بالا بیاوریم.
در این مقاله کوتاه سعی شده است که در رابطه با بالا آوردن چند مولفه مجزای postfix بر روی یک سرور صحبت شود وآموزش های اولیه جهت راه اندازی آن داده شود.
برای راه اندازی این مدل از postfix شما باید ابتدا به تعداد مولفه هایی که می خواهید، در زیر شاخه /etc پوشه بسازید و سپس به ترتیب فایلهای main.cf و master.cf را به صورت شخصی سازی شده برای آن مولفه در پوشه های ساخته شده قرار دهید.
برای مثال شما می خواهید ۴ مولفه postfix برای ارسال ایمیل داشته باشید به ترتیب زیر عمل می کنید:
۱– ابتدا برای هر مولفه یک فوادر در زیر شاخه etc می سازیم
#mkdir /etc/postfix-out-XX
توجه داشته باشید که می توانید بجای XX از یک شماره یا یک نام که هر پوشه را نسبت به دیگرپوشه ها مجزا کند استفاده کنید.
۲– در مرحله دوم شما باید در زیر شاخه /var/spool دقیقاً همان پوشه هایی که در زیر شاخه etc ساختیم را بسازید.
# mkdir /var/spool/postfix-out-XX
۳– در مرحله سوم ما باید فایلهای master.cf و main.cf را برای هر یک از مولفه های postfix خودمان در زیر شاخه etc بسازیم
در این مرحله پیشنهاد میشود که از فایلهای پیش فرضی که در مسیر نصب postfix قرار دارد استفاده کنید و بسته به ip و تنظیمات هر مولفه نسبت به ویرایش فایلهای آن اقدام کنید. (در زیر نمونه فایل های master.cf و main.cf آمده است.)
نمونه فایل master.cf:
XXX.XXX.XXX.XXX:smtp inet n – – – – smtpd
pickup fifo n – – ۶۰ ۱ pickup
cleanup unix n – – – ۰ cleanup
qmgr fifo n – n ۳۰۰ ۱ qmgr
tlsmgr unix – – – 1000? 1 tlsmgr
rewrite unix – – – – – trivial-rewrite
bounce unix – – – – 0 bounce
defer unix – – – – 0 bounce
trace unix – – – – 0 bounce
verify unix – – – – 1 verify
flush unix n – – 1000? 0 flush
proxymap unix – – n – – proxymap
proxywrite unix – – n – 1 proxymap
smtp unix – – – – – smtp
relay unix – – – – – smtp
showq unix n – – – – showq
error unix – – – – – error
retry unix – – – – – error
discard unix – – – – – discard
local unix – n n – – local
virtual unix – n n – – virtual
lmtp unix – – – – – lmtp
anvil unix – – – – 1 anvil
scache unix – – – – 1 scache
maildrop unix – n n – – pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp unix – n n – – pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender – $nexthop!rmail ($recipient)
ifmail unix – n n – – pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix – n n – – pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix – n n – 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix – n n – – pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
نمونه فایل main.cf:
data_directory = /var/lib/postfix-out-xx
myhostname = <YOUR HOSTNAME>
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8 <IP OF YOUR NETWORK>
alias_maps = hash:/etc/aliases
smtpd_banner = $myhostname ESMTP $mail_name
readme_directory = no
inet_protocols = ipv4
authorized_submit_users =
queue_directory = /var/spool/postfix-out-xx
multi_instance_group = mta
multi_instance_name = postfix-out-xx
smtp_bind_address = <SPECIFICE POSTFIX INSTANCE IP>
multi_instance_enable = yes
۴– در این مرحله به زیر شاخه /var/spool میرویم و در تک تک پوشه هایی که برای مولفه های postfixمان یک پوشه etc می سازیم و فایلهای hosts وservices را در آن کپی می کنیم.
# mkdir /var/spool/postfix-out-XX/etc
# cp /etc/hosts /var/spool/postfix-out-XX/etc
# cp /etc/services /var/spool/postfix-out-XX/etc
توجه داشته باشید که این عملیات برای همه مولفه ها باید انجام شود.
بعد از انجام مراحل بالا مقدمات بالا آوردن مولفه های جداگانه postfix بر روی سرور فراهم شده است و باید آنها رو بالا بیاوریم !!!!
۵– بعد از آماده شدن مقدمات ابتدا باید postfix را برای بالا آوردن چند مولفه با دستور زیر آماده کنیم
# postmulti -e init
۶– در این مرحله به ساختن مولفه ها میپردازیم برای این منظور از دستور زیر استفاده می کنیم
# postmulti -I postfix-out-XX -G mta -e create
توجه داشته باشیم که در قسمت postfix-out-XX شما باید به ترتیب اسم پوشه هایی که در زیر شاخه etc ساختهاید را بدهید. اگر پوشه ها را در مسیر دیگری ساختهاید باید مسیر کامل آنها را به دستور بدهید.
۷– در این مرحله باید مولفه هایی را که ساختیم را بالا بیاوریم تا به صورت عملی کار کنند برای این منظور:
اگر بخواهیم فقط یک مولفه را بالا بیاوریم از دستور زیر
# postmulti -i <instance-name> -p start
و اگر بخواهیم تمام مولفه هایی که ساخیم به صورت اتوماتیک و پشت سر هم بالا بیایند از دستور زیر استفاده می کنیم
# postmulti -p start
توجه داشته باشید که در این قسمت <instance-name> اسم مولفه postfix یا همان اسم پوشه ای است که در زیر شاخه etc در مراحل قبل ساختهایم.
ذکر این نکته هم ضروری به نظر می رسد که در دستورات این مرحله می توانید از option های دیگری نیز استفاده کنید که در زیر به آنها اشاره می کنیم
status ==> وضعیت مولفه ها را نمایش می دهد
# postmulti -p status
stop ==> مولفه ها را از حالت سرویس دهی خارج می کند
reload ==> در صورت تغییر در فایلهای تنظیمات، هر مولفه بدون از دسترس خارج شدن، سرویس فایل تنظیمات جدید را دوباره برای مولفه بارگذاری می کند.
نکته:
در صورتی که بخواهید تنظیماتی را بر روی همه مولفه های درحال اجرا اعمال کنید از دستور زیر استفاده کنید:
# postmulti -x postconf -e “<new configuration>”
و در صورتی که می خواهید فقط روی یکی از مولفه ها تنظیمات را اعمال کنید از دستور زیر استفاده کنید:
# postmulti -i <instance-name> -x postconf -e “<new configuration>”
و در آخر برای تست و اطمینان از بالا بودن هر یک از مولفه ها از دستور telnet به مقصد ip مورد نظر استفاده می کنیم.
# telnet XXX.XXX.XXX.XXX 25