no way to compare when less than two revisions
تفاوتها
تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده میکنید.
— | zimbra [2024/03/14 05:10] (فعلی) – ایجاد شد - ویرایش خارجی 127.0.0.1 | ||
---|---|---|---|
خط 1: | خط 1: | ||
+ | ~~NOSIDEBAR~~ | ||
+ | ====== مقدمه ====== | ||
+ | |||
+ | ===== تصمیمگیری دربارهٔ سیستمعامل و نسخهٔ زیمبرا ===== | ||
+ | |||
+ | زیمبرا برای سیستمعاملهای Red Hat Enterprise و Ubuntu و CentOS و Oracle Linux و Rocky Linux در نسخههای مختلفی Build شده که میشود دانلود کرد و نصب کرد. بهتر است نسخهٔ مربوط به سیستمعاملی را نصب کنیم که هم شمارهٔ ورژن زیمبرا آخرین نسخهٔ آن باشد و هم آن نسخه برای آخرین ورژن سیستمعامل میزبان موجود باشد؛ مثلاً اگر نسخهٔ زیمبرایی که برای اوبونتو موجود است قدیمیست و نسخهای از اوبونتو که روی آن نصب میشود هم قدیمی است بهتر است که از نسخهٔ مربوط به اوبونتو را استفاده نکرد. البته میشود نسخهٔ موجود برای نسخهٔ قدیمیتر یک سیستمعامل را روی نسخهٔ جدیدتر آن سیستمعامل هم نصب کرد ولی اینکار را توصیه نمیکنم چون موقع نصب فرایند کمی پیچیدهتر میشود. مستند فوق برای نصب آخرین نسخه زیمبرا روی CentOS 8 Minimal و همچنین Ubuntu 20.04 کامل تست شدهاست. البته CentOS از نسخهٔ ۸ به بعد با نام Stream منتشر میشود به این معنی که بر اساس نسخهٔ جدیدتر ولی ناپایدارتر ردهت منتشر میشود و برای همین خیلیها دیگر از آن استفاده نمیکنند. Rocky Linux توسط کامیونیتی توسعه یافته و چون توزیع جوانتری است زیر توسعهٔ سنگین از طرف کامیونیتی است. برای همین احتمالاً یکی از بهترین گزینههای در حال حاضر همان اوبونتو است. | ||
+ | |||
+ | زیمبرا دو نسخهٔ پولی و community edition دارد. یکی از تفاوتهای نسخهٔ community edition با پولی آن در این است که در نسخهٔ پولی به شما این اجازه را میدهد که لوگوی zimbra را با لوگوی خودتان عوض کنید. البته در نسخهٔ رایگان هم این کار امکانپذیر است ولی هم پیدا کردن محل قرارگیری لوگو و لینکهای zimbra قدری دردسر دارد هم شرکت سازنده درخواست کرده که اینکار را نکنید. بسیاری از دستوراتی که در فرومها، وبلاگها، ویکیها و … در اینترنت ممکن است پیدا کنید برای نسخههای قدیمیتر زیمبرا یا پستفیکس نوشته شده. در نسخههای جدیدتر تغییرات بسیاری صورت گرفته و در مواردی حتی متغیرهای جدیدی به فایلهای کانفیگ اضافه شده. همچنین برخی دستورات و تنظیمات برای نسخهٔ رایگان و پولی با هم فرق دارند. برای همین موقع مطالعه مستندات همیشه به ورژن پستفیکس یا زیمبرایی که آن مستند برایش نوشته شده دقت کنید. اگر میخواهید لینک دانلود نسخهٔ رایگان زیمبرا برای سیستمعاملهای مختلف را ببینید [[https:// | ||
+ | |||
+ | ===== فرایند نصب ===== | ||
+ | |||
+ | نصب زیمبرا و استفاده از امکانات مدیریت آن ساده است. قسمت مشکل تنظیم پستفیکس و فایروال برای جلوگیری از ارسال اسپم از طریق relay باز سرور و تنظیم درست DNS طوریکه ایمیلهای ارسالی به پوشهٔ اسپم فرستاده نشود و سمت مقصد معتبر شناخته شود است. همچنین باید تمام این موارد را پس از نصب تست کنید. همچنین دقت کنید محیط پروداکشن جای آزمون و خطا نیست. پیشنهاد میشود تمام آزمون و خطاهایتان را در یک محیط تست اما با تنظیمات شبکهٔ واقعی و IP ولید روی اینترنت (چون قسمت اصلی کار مربوط به همین تنظیمات است) انجام دهید و وقتی با موفقیت انجام شد در محیط پروداکشن و سروری که میخواهید دامنهٔ اصلی را روی آن تنظیم کنید انجام دهید. چون تغییر دادن تنظیمات نادرستی که انجام میدهید معمولاً با قدری side effects یا عوارض جانبی همراه است. | ||
+ | |||
+ | ===== برنامههای استفاده شده در زیمبرا ===== | ||
+ | |||
+ | ایمیلسرور مجموعهٔ بسیار پراکندهای از چندین ابزار مختلف است که در کنار هم کار میکنند؛ مثلاً zimbra برای چک کردن ویروس اتچمنت ایمیلها از clamd استفاده میکند یا برای چک کردن اسپم ایمیلهای دریافتی از spamassassin و برای چک کردن ایمیلهای ارسالی از amavisd استفاده میکند. کور سیستم که ایمیلها را دریافت یا ارسال میکند postfix است برای همین آشنایی قبلی با تنظیمات postfix به شما کمک زیادی میکند. همچنین تعداد زیادی ابزارهای مختلف دیگر مشابه google drive یا google docs یا تقویم و ابزارهای مدیریت تسک و چت و … به کاربر میدهد که هرکدام به تنهایی واقعاً ابزارهای کاملی هستند. بعضی از این سرویسها مانند amavisd رم بسیار زیادی اشغال میکنند. مینیمم ۸ گیگ رم و ۴ کور سیپییو در حالتی که روی اوبونتو نصب میکنید و زیر ده نفر کاربر فعال داشته باشید احتمالاً کافیست. وبسروری که برای کلاینت وب ایمیل استفاده میکند Jetty است و وبسروری که برای برخی صفحات مدیریتی استفاده میکند نسخهٔ خلاصهشدهای از Apache است. همچنین برای دیتابیسش از Mysql استفاده میکند. | ||
+ | |||
+ | ===== نیازمندیهای نصب ===== | ||
+ | |||
+ | پیشنهاد میشود که ایمیلسرور را روی یک ماشین مجازی مجزا نصب کنید چون برخی سرویسهای مورد نیاز برای ایمیل با سرویس وب کانفیلیکت دارند و نصب هر دوی آنها روی یک سیستمعامل با اینکه ممکن است اما کار بسیار غلطیست و هیچوقت توصیه نمیشود. البته سرویس ایمیل با DNS کانفیلیکت ندارد و اتفاقاً در بیشتر مواقع توصیه میشود این دو سرویس روی یک سرور یا دو سرور در یک شبکه باشند چون در اینصورت میشود محدودیتهای بهتری روی ترافیک ورودی و خروجی سرور اعمال نمود. متأسفانه فایل داکر مناسبی برای زیمبرا که نسخهٔ جدید رایگان آن را روی یک سیستمعامل نسبتاً جدید نصب کند یا بهطور رسمی تأیید شده باشد وجود ندارد. برای همین امکان ایزوله کردن آن در کانتینر به راحتی وجود ندارد. | ||
+ | |||
+ | ===== مدیریت ایمیلسرور ===== | ||
+ | |||
+ | بعد از نصب ایمیلسرور میتوانید به هر تعداد دامنه روی آن تعریف کنید. مشابه virtual host که برای وبسرور کانفیگ میکنید و از چندین دامنه روی یک وبسرور میزبانی میکنید برای ایمیلسرور هم چنین امکانی وجود دارد. موقع تعریف حسابهای کاربری دقت کنید که حتماً برای تمام کاربرها حتی خودتان یا مدیر سازمان qouta در نظر بگیرید. همچنین کاربرها را طبقهبندی کنید. زیمبرا یک سری zimlet دارد که درواقع افزونههای زیمبرا هستند و فیچرهای بسیاری مانند چت یا یکپارچه شدن با linkedin یا امکاناتی نظیر گوگل داک را میشود به وسیلهٔ آنها به زیمبرا اضافه کرد. | ||
+ | |||
+ | ====== نکات مهم فنی زیمبرا ====== | ||
+ | |||
+ | نکات و دستورهای این بخش را باید پیش از شروع مطالعه این مستند بدانید زیرا دستورهای نوشته شده در این بخش در بخشهای بعد استفاده میشوند اما برای پرهیز از تکرار دستورات این بخش در سایر بخشها نوشته نشدهاست. | ||
+ | |||
+ | ===== ورود به user مخصوص زیمبرا ===== | ||
+ | |||
+ | برخی دستورات باید با user زیمبرا اجرا شوند در غیراینصورت با پیغام این دستور وجود ندارد مواجه میشوید. در این موارد به user زیمبرا لاگین کنید و بعد دستورات را اجرا کنید: | ||
+ | |||
+ | su - zimbra | ||
+ | |||
+ | به جز مواردی که دستور فقط در یوزر زیمبرا معنی دارد تمام موارد نوشته شده در این مستند باید با سطح دسترسی یوزر root اجرا شوند. | ||
+ | |||
+ | ===== تنظیمات اصلی postfix ===== | ||
+ | |||
+ | مهمترین تنظیمات پستفیکسی که انجام میدهید در این فایل نگهداری میشوند: | ||
+ | |||
+ | nano / | ||
+ | |||
+ | حتی بسیاری از دستوراتی که برای تغییر تنظیمات اجرا میکنید در نهایت محتوای این فایل را ویرایش میکنند. بررسی تنظیمات این فایل برای ترابلشوتینگ و پیدا کردن مشکل کمک بسیاری میکند چون میشود همهٔ تنظیمات اصلی کور سیستم را یکجا در آن دید. | ||
+ | |||
+ | ===== ریست کردن خود زیمبرا و سرویسهای زیمبرا ===== | ||
+ | |||
+ | بعد از هر تغییر اساسی نیاز دارید کل زیمبرا یا سرویس مربوط به آن را ریست کنید. در دستورات مربوط به ریست کردن، متوقف کردن یا استارت کردن هر سرویس به ترتیب کلمات restart یا stop یا start استفاده شده. برای ریست کردن کل زیمبرا: | ||
+ | |||
+ | zmcontrol restart | ||
+ | |||
+ | اگر روی زیمبرا policyd نصب کردید و میخواهید آن را فعلاً متوقف کنید از این دستور استفاده کنید: | ||
+ | |||
+ | zmcbpolicydctl stop | ||
+ | |||
+ | برای ریست کردن سرویس MTA: | ||
+ | |||
+ | zmmtactl restart | ||
+ | |||
+ | برای ریست کردن سرویس Amavisd: | ||
+ | |||
+ | zmamavisdctl restart | ||
+ | |||
+ | برای ریست کردن سرویس LDAP: | ||
+ | |||
+ | ldap restart | ||
+ | |||
+ | برای ریست کردن سرویس ضد اسپم: | ||
+ | |||
+ | zmantispamctl restart | ||
+ | |||
+ | برای ریست کردن سرویس ضد ویروس: | ||
+ | |||
+ | zmantivirusctl restart | ||
+ | |||
+ | برای ریست کردن سرویس آپاچی زیمبرا: | ||
+ | |||
+ | zmapachectl restart | ||
+ | |||
+ | برای سرویس پراکسی زیمبرا: | ||
+ | |||
+ | zmproxyctl restart | ||
+ | |||
+ | ====== راهنمای نصب ====== | ||
+ | |||
+ | ===== آمادهسازی سیستمعامل ===== | ||
+ | |||
+ | ==== نصب سیستمعامل ==== | ||
+ | |||
+ | اگر سنت را نصب میکنید موقع نصب گزینه Minimal را انتخاب کنید ولی هیچکدام از سرویسهای روبروی آن مانند Infrustructure یا Basic را تیک نزنید. ممکن است برای سهولت کار ترجیح بدهید موارد خیلی بیسیک را تیک بزنید چون اگر هیچکدام را تیک نزنید خیلی از برنامههایی که احتمالاً به آنها عادت دارید مثل vim یا nano را نخواهید داشت. اما باز هم توصیه میکنم تیک نزنید چون وقتی تیک نمیزنید سیستمعامل در cleanترین و کمحجمترین حالت ممکن نصب میشود و آنوقت میدانید چه چیزهایی روی آن نصب است و چه چیزهایی نصب نیست. | ||
+ | |||
+ | اوبونتوی سرور هم از نسخهٔ ۲۲.۰۴ به بعد یک آپشن minimal به مراحل نصبش اضافه کردهاست که اگر آن را تیک بزنید اوبونتو در حالت مینیمال نصب میشود ولی نسخههای قبلتر سرور این آپشن را نداشتند و نصب اوبونتوی مینیمال نیازمند نصب یک ایمیج غیررسمی بود که استفاده از آن هم نیازمند داشتن اطلاعاتی دربارهٔ نحوه استفاده از فایل ایمیج در مجازیساز میزبانش بود. البته در حال حاضر زیمبرا برای اوبونتو ۲۰.۰۴ عرضه شدهاست. | ||
+ | |||
+ | ==== تنظیمات شبکه ==== | ||
+ | |||
+ | فایل مربوط به اینترفیس را ادیت کنید. آدرس این فایل معمولاً بعد از نصب روی vmware در سنت اینجاست: | ||
+ | |||
+ | vi / | ||
+ | |||
+ | دقت کنید نام اینترفیسهای شبکه در سنتاواس معمولاً به صورت ens است نه eth و عدد آنهم از صفر شروع نمیشود. محتویات این فایل بعد از ادیت چیزی شبیه این خواهد بود: | ||
+ | |||
+ | TYPE=Ethernet | ||
+ | HWADDR=00: | ||
+ | BOOTPROTO=none | ||
+ | DEFROUTE=yes | ||
+ | IPADDR=192.168.100.150 | ||
+ | NETMASK=255.255.255.248 | ||
+ | GATEWAY=192.168.100.147 | ||
+ | PEERDNS=yes | ||
+ | PEERROUTES=yes | ||
+ | IPV4_FAILURE_FATAL=no | ||
+ | IPV6INIT=yes | ||
+ | IPV6_AUTOCONF=yes | ||
+ | IPV6_DEFROUTE=yes | ||
+ | IPV6_PEERDNS=yes | ||
+ | IPV6_PEERROUTES=yes | ||
+ | IPV6_FAILURE_FATAL=no | ||
+ | NAME=ens32 | ||
+ | UUID=87c6ba20-4ec1-4282-a1cf-23e99ce50848 | ||
+ | DEVICE=ens32 | ||
+ | ONBOOT=yes | ||
+ | DNS1=8.8.8.8 | ||
+ | |||
+ | اگر از اوبونتو استفاده میکنید باید فایل netplan را باز و تنظیم کنید: | ||
+ | |||
+ | nano / | ||
+ | |||
+ | محتویات این فایل چیزی شبیه زیر باشد: | ||
+ | |||
+ | < | ||
+ | network: | ||
+ | ethernets: | ||
+ | ens160: | ||
+ | addresses: | ||
+ | - 10.10.10.91/ | ||
+ | gateway4: 10.10.10.1 | ||
+ | nameservers: | ||
+ | addresses: | ||
+ | - 8.8.8.8 | ||
+ | search: [] | ||
+ | version: 2 | ||
+ | </ | ||
+ | |||
+ | بعد دستور زیر را برای اعمال تنظیمات جدید بزنید: | ||
+ | |||
+ | netplan apply | ||
+ | |||
+ | بعد از تنظیم شبکه و ریست کردن نتورک، آی پی بیرونی یا public یا external سرور را با این دستور پیدا کنید: | ||
+ | |||
+ | wget -qO- http:// | ||
+ | |||
+ | ==== آپدیت سیستمعامل ==== | ||
+ | |||
+ | در سنت برخلاف دبیان دستور آپدیت و آپگرید از هم جدا نیست و وقتی آپگرید میکنید خودش به صورت اتوماتیک قبلش آپدیت میکند. سیستم را آپدیت کنید: | ||
+ | |||
+ | yum upgrade | ||
+ | yum -y install epel-release | ||
+ | |||
+ | اگر از اوبونتو استفاده میکنید لیست پکیجها را آپدیت و بعد خودشان را آپگرید کنید و سیستم را ریبوت کنید: | ||
+ | |||
+ | apt update && apt upgrade -y | ||
+ | apt autoremove -y | ||
+ | reboot | ||
+ | |||
+ | ==== نصب پکیجهای اضافه و کلاینت ==== | ||
+ | |||
+ | یکسری ابزارهای شبکه مورد نیاز که به صورت پیشفرض نصب نیستند را نصب خواهیم کرد. ابزارهای ضروری را نصب کنید: | ||
+ | |||
+ | yum -y install htop nano bash-completion bind-utils net-tools wget curl lsof telnet openssh-server openssh-clients wget screen unzip nmap sed nc rsync | ||
+ | |||
+ | این پکیجها هم قبلا جزو دیپندنسیهای زیمبرا بودند و احتمالا باید نصب شوند: | ||
+ | |||
+ | yum -y install perl perl-core sysstat libaio aspell | ||
+ | |||
+ | برنامه nano یک ابزار بسیار راحت برای ویرایش فایلهاست. سنت ۸ بعد از نصب به صورت دیفالت امکان اتوکامپیلیت (استفاده از کلید تب برای کامل کردن دستور) در محیط بش را ندارد برای این منظور bash-completion را نصب کردیم. net-tools هم شامل یک سری ابزارهای خیلی بیسیک شبکه مانند nmap و netstat است. bind-utils شامل ابزارهای دیگر شبکه که در رابطه با DNS استفاده میشوند مانند dig و nslookup هست. wget برای دانلود فایل از اینترنت و curl برای ارسال انواع ریکوئستها استفاده میشود. lsof برای بررسی لیست فایلها و سوکتهای باز استفاده میشود. openssh-server به احتمال زیاد به صورت پیشفرض نصب بوده ولی برای حصول اطمینان از نصب بودن آن نوشتیم. openssh-client هم که برنامهایست که با آن ssh میزنیم. | ||
+ | |||
+ | اگر از اوبونتو سرور استفاده میکنید میتوانید این پکیج را نصب کنید: | ||
+ | |||
+ | apt install telnet -y | ||
+ | |||
+ | ==== حذف برنامههایی که دچار کانفیلیکت میشوند ==== | ||
+ | |||
+ | اگر پستفیکسی به صورت پیشفرض نصب هست که پورت ۲۵ را درگیر میکند آن را غیرفعال و حذف کنید: | ||
+ | |||
+ | systemctl stop postfix | ||
+ | yum remove postfix | ||
+ | |||
+ | ==== سرویس ذخیره لاگها توسط زیمبرا ==== | ||
+ | |||
+ | برای اینکه زیمبرا بتواند لاگها را درست تولید کند rsyslog را نصب و راهاندازی کنید: | ||
+ | |||
+ | yum install rsyslog -y | ||
+ | |||
+ | سپس تنظیمات آن را باز کنید: | ||
+ | |||
+ | nano / | ||
+ | |||
+ | خطهای زیر را از کامنت خارج کنید تا از پروتوکل udp برای ارتباط با سرور لاگر استفاده کند: | ||
+ | |||
+ | module(load=" | ||
+ | input(type=" | ||
+ | |||
+ | روی فایروال دسترسی rsyslog را باز کنید: | ||
+ | |||
+ | sudo firewall-cmd | ||
+ | sudo firewall-cmd --reload | ||
+ | |||
+ | سرویس را ریست کنید و آن را برای اجرا هنگام بوت فعال کنید: | ||
+ | |||
+ | sudo systemctl restart rsyslog | ||
+ | sudo systemctl enable rsyslog | ||
+ | |||
+ | ==== غیرفعال کردن پورت ۲۲ ==== | ||
+ | |||
+ | برای افزایش امنیت میتوانیم پورت پیشفرض ssh یعنی ۲۲ را به یک پورت غیراستاندارد تغییر دهیم. هرچند معمولا اینکار پیشنهاد نمیشود چون لینوکس پروتکشنهای سطح پایین بسیاری روی پورت ۲۲ دارد که در صورت تغییر این پورت از کار میافتند. | ||
+ | |||
+ | اگر پورت ssh را از ۲۲ تغییر دهیم و sshd را ریست کنیم مشاهده میکنیم که ارور میدهد و سرویس بالا نمیآید. برای اینکه در این رابطه به مشکل نخوریم باید firewalld و selinux و iptables را ابتدا غیرفعال کنیم (بعد از نصب زیمبرا مجدد فعال و سپس کانفیگ میکنیم): | ||
+ | |||
+ | setenforce 0 | ||
+ | service firewalld stop | ||
+ | service iptables stop | ||
+ | service ip6tables stop | ||
+ | systemctl disable firewalld | ||
+ | systemctl disable iptables | ||
+ | systemctl disable ip6tables | ||
+ | |||
+ | حالا فایل / | ||
+ | |||
+ | SELINUX=enforcing | ||
+ | |||
+ | به این تغییر دهید: | ||
+ | |||
+ | SELINUX=disabled | ||
+ | |||
+ | برای عوض کردن پورت پیشفرض sshd فایل / | ||
+ | |||
+ | < | ||
+ | #Port 22 | ||
+ | </ | ||
+ | |||
+ | به این تغییر دهید: | ||
+ | |||
+ | Port 2233 | ||
+ | |||
+ | سرویس را ریست کنید: | ||
+ | |||
+ | service sshd restart | ||
+ | |||
+ | همچنین دقت کنید زیمبرا برای برخی از ارتباطات داخلی خود از ssh و پورت پیشفرض آن استفاده میکند برای تغییر آن به پورت جدید ssh از این دستور استفاده کنید: | ||
+ | |||
+ | zmprov ms mail.example.com zimbraRemoteManagementPort 2233 | ||
+ | |||
+ | ==== تنظیم تایمزون ==== | ||
+ | |||
+ | سرویس بهروزرسانی زمان سرور از طریق تایمزون در سنتاواس که chrony نام دارد را نصب و تنظیم کنید: | ||
+ | |||
+ | dnf install chrony -y | ||
+ | timedatectl set-timezone Asia/Tehran | ||
+ | systemctl start chronyd | ||
+ | systemctl enable chronyd | ||
+ | systemctl status chronyd | ||
+ | |||
+ | اگر از اوبونتو استفاده میکنید: | ||
+ | |||
+ | dpkg-reconfigure tzdata | ||
+ | |||
+ | تاریخ و ساعت روی سرور را چک کنید درست باشد: | ||
+ | |||
+ | date | ||
+ | |||
+ | ===== آمادهسازی نیازمندیهای نصب زیمبرا ===== | ||
+ | |||
+ | ==== دانلود فایل زیمبرا ==== | ||
+ | |||
+ | لینک مستقیم دانلود آخرین نسخه زیمبرا برای centos یا ubuntu را از [[https:// | ||
+ | |||
+ | اگر میخواهید پکیج نسخه اوبونتو را دانلود و از حالت فشرده خارج کنید میتوانید دستورات زیر را وارد کنید: | ||
+ | |||
+ | cd /tmp | ||
+ | wget https:// | ||
+ | tar xvfz zcs-8.8.15_GA_4179.UBUNTU20_64.20211118033954.tgz | ||
+ | |||
+ | ==== تنظیمات دیاناس داخلی سرور ==== | ||
+ | |||
+ | سرور شما باید یک آیپی استاتیک داشته باشد. این آیپی استاتیک میتواند آیپی پابلیک سرور یا آیپی پرایوت سرور باشد. فایل /etc/hosts را باز کنید و این خط را به آن اضافه کنید: (فرض کردم آیپی استاتیک سرور شما 192.168.100.150 است.): | ||
+ | |||
+ | 192.168.100.150 mail.example.com mail | ||
+ | |||
+ | اگر در سنت هستید دستورهای زیر را اجرای کنید: | ||
+ | |||
+ | hostname mail.example.com | ||
+ | echo " | ||
+ | |||
+ | اگر در اوبونتو هستید دستور زیر را اجرا کنید: | ||
+ | |||
+ | hostnamectl set-hostname mail.example.com | ||
+ | |||
+ | ===== تنظیمات DNS ===== | ||
+ | |||
+ | اگر از یک سرویس دیاناس دیگر استفاده میکنید آن را تنظیم کنید ولی اگر دیاناس را روی همین سرور راه میاندازید با دستور زیر نصب کنید: | ||
+ | yum -y install bind | ||
+ | |||
+ | برای تنظیم دیاناس در ابتداییترین حالت خود به دو ریکورد نیاز خواهید داشت. یکی ریکورد نوع A از زیردامنهٔ سایتی که میخواهید محل کلاینت وب ایمیلسرورتان باشد به آیپی ایمیلسرور و دیگری یک ریکورد MX از خود دامنه (در واقع دامنهای که بعد از @ در آدرس ایمیلتان نوشته خواهد شد) به آیپی ایمیلسرور. برای مثال فرض کنید آیپی ایمیل سرور شما 1.2.3.4 و نشانی سایت شما example.com و نشانی سایتی که کاربران به ایمیلشان لاگین خواهند کرد mail.example.com باشد. برای مثال فوق فایل zone دیاناس برای bind9 به اینصورت خواهد بود: | ||
+ | |||
+ | $TTL 604800 | ||
+ | @ IN SOA example.com. root (2013090503 ; Serial | ||
+ | 7200 ; Refresh | ||
+ | 120 ; Retry | ||
+ | 2419200 ; Expire | ||
+ | 10800) ; Negative Cache TTL | ||
+ | ; | ||
+ | @ IN NS example.com. | ||
+ | mail IN A 1.2.3.4 | ||
+ | example.com. IN MX 25 mail.example.com. | ||
+ | |||
+ | اگر روی یک دیاناس سرور دیگر میخواهید ریکوردهایتان را تنظیم کنید در سادهترین شکل ممکن به اینها نیاز خواهید داشت: | ||
+ | |||
+ | ^Type^Name^Value/ | ||
+ | |A|mail|PUBLIC_IP_ADDRESS| | ||
+ | |MX|example.com|mail.example.com 25| | ||
+ | |||
+ | ==== کانفیگ SPF و TXT ریکوردها ==== | ||
+ | |||
+ | ایمیلهای ارسالی شما باید designated باشد. یک راه چک کردنش اینست که یک ایمیل برای یه آدرس جیمیل بفرستید و بعد از منوی show original هدر ایمیل را چک کنید. در این هدر باید عبارت spf pass را ببینید و اینکه آدرس ایمیلتان به آیپی پابلیک سرورتان designate شده است. اگر نبود یعنی ریکورد SPF ندارید. ریکوردهای SPF برحسب شرایط مختلف حالات مختلفی خواهند داشت که //در آینده توضیح خواهم داد//. حالت عمومیتر آن که من معمولا استفاده میکنم برای تنظیمات bind به اینصورت است: | ||
+ | |||
+ | mail | ||
+ | example.com. | ||
+ | example.com. | ||
+ | @ IN TXT " | ||
+ | | ||
+ | mail | ||
+ | example.com. | ||
+ | |||
+ | خود ریکوردها برای تنظیم روی DNS Server بیرونی به شرح زیر است: | ||
+ | |||
+ | ^Type^Name^Value/ | ||
+ | |SPF|example.com|v=spf1 mx -all| | ||
+ | |MX|mail|" | ||
+ | |MX|example.com|" | ||
+ | |||
+ | ==== کانفیگ Reverse DNS ==== | ||
+ | |||
+ | ۱۱. برای اینکه بفهمید reverse dns را درست کانفیگ کردید یا نه میتوانید از [[http:// | ||
+ | |||
+ | برای حل این مشکل باید با ISP تماس بگیرید تا ریکورد نوع PTR مربوطه را تعریف کنند. اگر آیپی پابلیک ایمیلسرور شما 1.2.3.4 باشد ریکوردی که باید تعریف کنند برای آیپیهای کلاس سی به صورت 4.3.2.in-addr.arpa باید تعریف شود و مقصد این ریکورد mail.example.com است. اگر کلاس سی نیست هم سابنت داخل ریکورد نوشته شده مشخص میشود. اگر این ریکورد تعریف نشود سرور مقصد نمیداند که ایمیلی که از آیپی سرور شما دریافت میکند متعلق به دامنهٔ example.com هست یا نه. پس تعریف این ریکورد الزامیست و درصورت عدم تعریف آن ممکن است ایمیلهایتان وارد پوشهٔ اسپم شود یا اصلا سمت مقصد دریافت نشود. | ||
+ | |||
+ | ==== کانفیگ ریکوردهای DKIM ==== | ||
+ | |||
+ | این بخش بعدا تکمیل خواهد شد. | ||
+ | |||
+ | ==== کانفیگ ریکوردهای DMARC ==== | ||
+ | |||
+ | برای این منظور یک رکورد نوع TXT از _dmarc.example.com تعریف کنید به مقصد متن زیر: | ||
+ | |||
+ | ``` | ||
+ | v=DMARC1; p=reject; rua=mailto: | ||
+ | ``` | ||
+ | |||
+ | این متن به سرور مقصد میگوید اگر ایمیلی از سرور ما دریافت کرد که آدرس ارسالکنندهٔ آن معتبر نبود میخواهیم چه واکنشی نسبت به آن نشان دهد. | ||
+ | |||
+ | ==== تست DNS ==== | ||
+ | |||
+ | ۱۲. درصورت تنظیم درست DNS و ریزالو شدن آیپی باید خروجی زیر را از nslookup بگیرید. در خروجی زیر Server و Address درواقع DNS سروری هستند که سیستم از آن دربارهٔ mail.example.com سوال میکند و Address دوم باید IP پابلیک سرورتان باشد. | ||
+ | |||
+ | >> nslookup mail.example.com | ||
+ | Server: | ||
+ | Address: | ||
+ | |||
+ | Non-authoritative answer: | ||
+ | Name: | ||
+ | Address: xx.xxx.xxx.xxx | ||
+ | |||
+ | دستور قبل جزئیات کافی از تنظیمات DNS در اختیار ما نمیگذارد. برای به دست آوردن ریز ریکوردهای تنظیم شده، به خروجی دستور dig نگاه میکنیم که ریکوردهای DNS فعال خواهند بود. یعنی با این دستورها میتوانید اطمینان حاصل کنید که ریکوردهایی که میخواستید در DNS سرور تنظیم شدهاند. دقت کنید هیچ لزومی ندارد که DNS سرور روی همین سرور نصب باشد و اگر جای دیگری هم باشد دستور dig خروجی درست را نشان میدهد و اینکه این دستور ممکن است بعد از چند بار اجرا خروجی متفاوتی بدهد. (این به دلیل فرایند cache شدن dns هست.) | ||
+ | |||
+ | dig example.com mx | ||
+ | dig example.com all | ||
+ | dig mail.example.com all | ||
+ | |||
+ | میزان سلامت کانفیگ دیاناستان را با [[http:// | ||
+ | |||
+ | ===== نصب زیمبرا ===== | ||
+ | |||
+ | ۱۳. پکیج نصب را به شاخهٔ /opt منتقل کنید | ||
+ | |||
+ | cd / | ||
+ | ./ | ||
+ | |||
+ | در مورد license agreement پاسخ مثبت دهید: | ||
+ | |||
+ | Do you agree with the terms of the software license agreement? [N] Y | ||
+ | |||
+ | در مورد استفاده از package repository زیمبرا پاسخ مثبت دهید: | ||
+ | |||
+ | Use Zimbra' | ||
+ | |||
+ | پکیجهای زیر را برای نصب انتخاب کنید. مواردی که Y میزنید نصب میشود و مواردی که N میزنید نصب نمیشوند. | ||
+ | |||
+ | Install zimbra-ldap [Y] Y | ||
+ | Install zimbra-logger [Y] Y | ||
+ | Install zimbra-mta [Y] Y | ||
+ | Install zimbra-dnscache [Y] N | ||
+ | Install zimbra-snmp [Y] Y | ||
+ | Install zimbra-store [Y] Y | ||
+ | Install zimbra-apache [Y] Y | ||
+ | Install zimbra-spell [Y] Y | ||
+ | Install zimbra-memcached [Y] Y | ||
+ | Install zimbra-proxy [Y] Y | ||
+ | Install zimbra-drive [Y] Y | ||
+ | Install zimbra-imapd (BETA - for evaluation only) [N] N | ||
+ | Install zimbra-chat [Y] Y | ||
+ | |||
+ | در پاسخ //The system will be modified. | ||
+ | |||
+ | سیستم تمام پکیجهایی که Y زدید را یکی یکی نصب میکند. سپس سیستم خودش dig میکند و تنظیمات DNS را چک میکند و ممکن است ارور دهد. این ارور حالات متنوعی دارد که حالت مدنظر ما حالت زیر هست. در جواب سوال زیر بزنید Yes و دامنه را تغییر بدهید: | ||
+ | |||
+ | DNS ERROR resolving MX for mail.example.com | ||
+ | It is suggested that the domain name have an MX record configured in DNS | ||
+ | Change domain name? [Yes] Yes | ||
+ | Create domain: [mail.example.com] example.com | ||
+ | |||
+ | اگر در مرحله قبل دامنه را تغییر ندهید دامنهٔ سایتتان mail.example.com و ایمیلهای شما به صورت [email protected] خواهد بود که مناسب نیست. در مرحلهٔ بعد عدد ۶ را تایپ کنید و اینتر بزنید تا پسورد ادمین را بعد از آن تغییر دهید: | ||
+ | |||
+ | 1) Common Configuration: | ||
+ | 2) zimbra-ldap: | ||
+ | 3) zimbra-logger: | ||
+ | 4) zimbra-mta: | ||
+ | 5) zimbra-snmp: | ||
+ | 6) zimbra-store: | ||
+ | +Create Admin User: yes | ||
+ | +Admin user to create: | ||
+ | ******* +Admin Password | ||
+ | +Anti-virus quarantine user: | ||
+ | ...... | ||
+ | ...... | ||
+ | Address unconfigured (**) items (? - help) 6 | ||
+ | Store configuration | ||
+ | | ||
+ | 1) Status: | ||
+ | 2) Create Admin User: | ||
+ | 3) Admin user to create: | ||
+ | ** 4) Admin Password | ||
+ | 5) Anti-virus quarantine user: [email protected] | ||
+ | ...... | ||
+ | ...... | ||
+ | Select, or ' | ||
+ | | ||
+ | Password for [email protected] (min 6 characters): | ||
+ | |||
+ | بعد از وارد کردن پسورد با r به منوی قبل بروید. اگر همه چیز به درستی تنظیم شد تنظیمات را apply کنید و چند دقیقه صبر کنید تا زیمبرا کامل نصب شود: | ||
+ | |||
+ | CONFIGURATION COMPLETE - press ' | ||
+ | Select from menu, or press ' | ||
+ | Save configuration data to a file? [Yes] Yes | ||
+ | Save config in file: [/ | ||
+ | Saving config in / | ||
+ | The system will be modified - continue? [No] Yes | ||
+ | Operations logged to / | ||
+ | |||
+ | سوال //Notify Zimbra of your installation?// | ||
+ | |||
+ | su -- zimbra -c “zmcontrol status” | ||
+ | |||
+ | بعد از نصب کامل زیمبرا دایرکتوری نصب آن را که قبلا ساخته شده بود را پاک کنید: | ||
+ | |||
+ | rm -rf / | ||
+ | |||
+ | نصب با موفقیت انجام شد. وارد کنسول وب شوید و مراحل تست را دنبال کنید: | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ===== تنظیمات iptables سنت ===== | ||
+ | |||
+ | ۱۴. اگر با SSH به سرور وصلید اول پورتهای مورد نیاز را باز کنید بعد موارد باقیمانده را ببندید زیرا در غیراینصورت دسترسیتان به سرور قطع میشود. | ||
+ | |||
+ | فهرست پورتهایی که نیاز دارید روی اینترنت باز بگذارید و کاربرد هر کدام در جدول زیر نوشته شده: | ||
+ | |||
+ | ^Port^Usage^ | ||
+ | |22/ | ||
+ | |80/ | ||
+ | |443/ | ||
+ | |7071/ | ||
+ | |25/ | ||
+ | |465/ | ||
+ | |110/ | ||
+ | |995/ | ||
+ | |143/ | ||
+ | |993/ | ||
+ | |||
+ | اگر از iptables استفاده میکنید میتوانید با دستور زیر فهرست ruleهای فایروال موجود روی سرور را ببینید: | ||
+ | |||
+ | iptables -S | ||
+ | |||
+ | اگر میخواهید فهرست chainهای موجود و پورتهای باز در هر کدام را همراه با شمارهٔ خط ببینید: | ||
+ | |||
+ | iptables -L --line-numbers | ||
+ | |||
+ | میتوانید ترافیک ورودی را به پورتهای موجود در جدول بالا از طریق iptables باز کنید: | ||
+ | |||
+ | iptables -A INPUT -i ens32 -p tcp -m multiport --dport 22, | ||
+ | |||
+ | رول زیر را هم وارد کنید و بعد chain ها را ببندید: | ||
+ | |||
+ | iptables -A INPUT -i lo -j ACCEPT | ||
+ | iptables -P INPUT DROP | ||
+ | iptables -P FORWARD DROP | ||
+ | |||
+ | برای ذخیره کردن رولهای iptables از دستور زیر استفاده کنید: | ||
+ | |||
+ | apt install iptables-persistent -y | ||
+ | invoke-rc.d netfilter-persistent save | ||
+ | |||
+ | اگر از سیستمعامل centos استفاده میکنید به احتمال قوی firewalld که یک اینترفیس برای iptables است در سیستم شما نصب و فعال است. برای بررسی وضعیت فعال بودن آن: | ||
+ | |||
+ | firewall-cmd --state | ||
+ | |||
+ | اگر نصب یا فعال نبود میتوانید با دستورات زیر آن را نصب کنید و طوری فعال کنید که بعد از reboot هم فعال بماند: | ||
+ | |||
+ | yum install firewalld | ||
+ | systemctl enable firewalld | ||
+ | |||
+ | برای دیدن فهرست ruleهای موجود در firewalld: | ||
+ | |||
+ | firewall-cmd --list-all | ||
+ | |||
+ | همچنین میتوانید پورتهای مذکور را به کمک firewalld باز کنید: | ||
+ | |||
+ | firewall-cmd --permanent --zone=public --add-port=22/ | ||
+ | firewall-cmd --permanent --zone=public --add-port=80/ | ||
+ | firewall-cmd --permanent --zone=public --add-port=443/ | ||
+ | firewall-cmd --permanent --zone=public --add-port=7071/ | ||
+ | firewall-cmd --permanent --zone=public --add-port=25/ | ||
+ | firewall-cmd --permanent --zone=public --add-port=465/ | ||
+ | firewall-cmd --permanent --zone=public --add-port=110/ | ||
+ | firewall-cmd --permanent --zone=public --add-port=995/ | ||
+ | firewall-cmd --permanent --zone=public --add-port=143/ | ||
+ | firewall-cmd --permanent --zone=public --add-port=993/ | ||
+ | |||
+ | حالا فایروال را ریستارت کنید: | ||
+ | |||
+ | systemctl restart firewalld | ||
+ | |||
+ | زیمبرا بعد از دریافت ایمیلها برای انتقال آن به inbox کاربر به پورت LMTP یا 7025 خودش متصل میشود پس این پورت باید روی سرور باز باشد ولی نیاز نیست روی اینترنت و آیپی پابلیک سرور هم باز باشد چون از بیرون به آن متصل نمیشوند. اگر زیمبرا از روی آیپی پابلیک سرور به این پورت وصل شود و این پورت روی اینترنت باز نباشد نمیتواند به آن متصل شود و در نتیجه سرور در دریافت ایمیل دچار مشکل میشود. این مشکل در لاگهای زیمبرا به این شکل دیده میشود که ایمیل وارد سرور میشود ولی به inbox کاربر منتقل نمیشود و هنگام انتقال به inbox ارور زیر را میبینید: | ||
+ | |||
+ | | ||
+ | |||
+ | در اینصورت باید به زیمبرا بگویید که از آیپی داخلی یا localhost برای اتصال به این پورت استفاده کند. این تنظیم را اگر بخواهید برای یک سرور مشخص تنظیم کنید: | ||
+ | |||
+ | zmprov ms mail.example.com zimbraMtaLmtpHostLookup native | ||
+ | |||
+ | اما اگر میخواهید به صورت گلوبالی برای همهٔ سرورها اعمال کنید: | ||
+ | |||
+ | zmprov mcf zimbraMtaLmtpHostLookup native | ||
+ | |||
+ | برای اعمال تنظیمات فوق زیمبرا را ریستارت کنید: | ||
+ | |||
+ | zmmtactl restart | ||
+ | |||
+ | ممکن است درآینده مشابه همین وضعیت در مورد پورت 161 که برای SNMP استفاده میشود هم نیاز شود. در اینصورت باید rule مربوطه را برای 161 هم وارد کنید. اگر میخواهید ترافیک ورودی به این پورت را برای کل شبکهٔ داخلی (در اینجا 192.168.100.X) باز کنید دستور زیر را وارد کنید: | ||
+ | |||
+ | iptables -A INPUT -i ens32 -p tcp -s 192.168.100.0/ | ||
+ | |||
+ | هر کانکشن دیگری را روی chainهای INPUT و FORWARD بلاک کنید: (دقت کنید ترافیک به بیرون را کلاً باز گذاشتیم) | ||
+ | |||
+ | iptables -P INPUT DROP | ||
+ | iptables -P FORWARD DROP | ||
+ | |||
+ | بعد از اجرای دستورات فوق باید تنظیمات iptables را بعد از ریبوت کنید: | ||
+ | |||
+ | yum install iptables-persistent | ||
+ | invoke-rc.d netfilter-persistent save | ||
+ | |||
+ | ===== تنظیمات فایروال بیرونی ===== | ||
+ | |||
+ | ۱۵. شاید به جز iptable خود ایمیلسرور بخواهید از یک فایروال سختافزاری هم استفاده کنید. برای اطلاع از تنظیمات مناسب فایروال برای زیمبرا [[http:// | ||
+ | |||
+ | ===== ریدایرکت http به https ===== | ||
+ | |||
+ | ۱۶. چند حالت دارد. ممکن است بخواهید زیمبرا با http و https کار کند. ممکن است بخواهید زیمبرا http را به https ریدایرکت کند و حالات ممکن دیگر. در نسخههای جدیدتر زیمبرا یک وبسرور nginx وجود دارد که به عنوان پراکسی برای وبسرور jetty که زیمبرا از آن استفاده میکند کار میکند. شما باید این تنظیمات را برای آن انجام دهید: | ||
+ | |||
+ | su - zimbra | ||
+ | zmprov ms mail.example.com zimbraReverseProxyMailMode redirect | ||
+ | zmcontrol restart | ||
+ | |||
+ | ===== بکآپگیری از سرور قبلی و عمل مایگریت ===== | ||
+ | ۱۷. اگر قبلاً از سرور زیمبرا استفاده میکردید و میخواهید ایمیلهای کاربرانش را به سرور جدید منتقل کنید لازم است که از ایمیلهای سرور قبلی بکآپ بگیرید. فایلهای بکآپ را به سرور جدید منتقل کرده و ریستور کنید. یکی از تفاوتهای نسخه پولی زیمبرا با نسخه اوپنسورس آن در پشتیبانی built-in سیستم از بکآپ است. نسخه پولی پشتیبانی بهتری دارد و در شل آن میتوانید به روشهای بسیار متنوعی از سرورتان بکآپ تهیه کنید. اما نسخه اوپنسورس زیمبرا آن ابزارها را ندارد و برای همین فقط کمی کارمان سختتر خواهد بود. برای به دست آوردن لیست کل اکانتهای موجود روی ایمیلسرور از این دستور روی سرور قبلی استفاده کنید: | ||
+ | |||
+ | zmprov -l gaa example.com | ||
+ | |||
+ | یوزرها را با یک پسورد فرضی روی سرور جدید بسازید: | ||
+ | |||
+ | zmprov ca [email protected] newpassword | ||
+ | |||
+ | حالا باید ایمیلها و هش شدهٔ پسورد آنها را برای ساخت یوزرها روی سرور جدید داشته باشیم. برای این منظور اسکریپت زیر را بسازید و با یوزر zimbra آن را اجرا کنید: | ||
+ | |||
+ | for i in `zmprov -l gaa | egrep -v ' | ||
+ | |||
+ | echo " | ||
+ | sed ' | ||
+ | |||
+ | done; | ||
+ | |||
+ | بعد اجرای اسکریپت شما یوزرنیمها و پسوردهای هششده را دارید پس با دستور زیر پسورد کاربرها را روی سرور جدید تغییر دهید: | ||
+ | |||
+ | zmprov ma [email protected] userPassword ' | ||
+ | |||
+ | مهمترین بخش کار، بکآپگیری از ایمیلهای اکانتها است. برای بکآپ گرفتن از ایمیلهای [email protected] از این دستور استفاده میشود: | ||
+ | |||
+ | zmmailbox -z -m [email protected] getRestURL '/? | ||
+ | |||
+ | این روش بکآپگیری شامل مهمترین اطلاعات مربوط به این یوزر میشود: | ||
+ | |||
+ | |||
+ | Contacts | ||
+ | Calendars | ||
+ | Briefcase | ||
+ | Tasks | ||
+ | Searches | ||
+ | Tags | ||
+ | Folders | ||
+ | |||
+ | اما شامل Junk و Trash نمیشود. شما میتوانید این دو را به صورت جدا بکآپ بگیرید: | ||
+ | |||
+ | zmmailbox -z -m [email protected] getRestURL '/ | ||
+ | zmmailbox -z -m [email protected] getRestURL '/ | ||
+ | |||
+ | اگر فایلهای فشرده خروجی دستورهای بالا را باز کنید تعدادی فایل با فرمت .eml و .meta در آن مشاهده خواهید کرد. فایلهای eml با نرمافزارهایی مثل outlook یا thunderbird به راحتی باز میشوند و هدر ایمیل شامل عنوان، تاریخ، مشخصات فرستنده و گیرنده و ... به علاوه متن ایمیل و اتچمنتهای آن را شامل میشود. متن و هدر ایمیل به طور مستقیم داخل فایل ذخیره میشوند اما اتچمنتها با فرمت base64 کد میشوند و ذخیره میشوند. استفاده از فرمت tgz به کاهش حجم ایمیلها کمک زیادی میکند و برای همین فرایند انتقال آنها راحتتر خواهد بود. اگر تعداد زیادی ایمیل دارید و میخواهید از تمام آنها بکآپ بگیرید از این اسکریپت استفاده کنید. | ||
+ | |||
+ | ۱۸. گام بعد انتقال فایلها از سرور قدیمی به سرور جدید است: | ||
+ | |||
+ | scp -P 2233 dumps/* [email protected]:/ | ||
+ | |||
+ | ۱۹. سمت مقصد با دستور ls -la مطمئن شوید که فایلها کامل منتقل شدند. برای restore کردن بکآپ باید ابتدا برای تمام افراد در ایمیل سرور جدید اکانت بسازید و بعد ایمیلها را داخل اکانتشان ریستور کنید. برای ریستور کردن سه حالت وجود دارد. یا میخواهید ایمیلها ریستور شوند و ایمیلهای موجود داخل اکانت کاربر ignore شوند. یا اینکه میخواهید ایمیلهای موجود و تکراری در اکانت کاربر بهروزرسانی شوند (فرایند replace شدن) یا میخواهید کل ایمیلهای موجود پاک شوند و ایمیلهای فایل dump جایگزین شوند. به حالت اول skip دومی modify و سومی reset گفته میشود. وقتی mode مورد نظر را انتخاب کردید با چنین دستوری ایمیلهای داخل فایل را به اکانت متناظرش ایمپورت کنید: | ||
+ | |||
+ | zmmailbox -z -m [email protected] postRestURL "/? | ||
+ | |||
+ | ==== نکات تکمیلی بکآپ و ریستور ==== | ||
+ | |||
+ | در اینجا سه بحث تکمیلی مطرح است. اول اینکه اگر بخواهیم به جای کل فایل dump بخشی از آن را ریستور کنیم باید چکار کنیم. بحث بعد روش ریستور کردن prefrenceهای کاربران است و بحث از همه مهمتر بحث restore کردن LDAP است. در این روش به جز تنظیمات حساب کاربری پسورد کاربران نیز ریست میشود و باید از اول به هر کاربر به صورت جداگانه password حساب کاربریش را اطلاع دهیم. برای اجتناب از این موضوع دیتابیس LDAP که شامل اطلاعات حسابهای کاربری است را اول منتقل میکنیم و بعد ایمیلها را. همچنین ابزارهای دیگری هستند که به فرایند بکآپگیری کمک میکنند. برخی از آنها trial هستند و برای مدت محدودی میتوان از آنها استفاده کرد. یکی از این ابزارها zextras نام دارد. این ابزار بعد از پایان یافتن مهلت استفاده رایگانش روزانه تعداد زیادی ایمیل به admin ارسال میکند و در پنل admin مدام درخواست خرید برنامه میدهد. ضمن اینکه برای استفاده از آن باید هم در مبدأ و هم در مقصد نصب باشد. برای همین در مجموع توصیه نمیشود. برای اطلاعات تکمیلی درباره موضوعات گفته شده [[http:// | ||
+ | |||
+ | ===== نصب پچ زیمبرا برای نسخهٔ ۸٫۶٫۰ خود ===== | ||
+ | ۲۰. برای این نسخه یک پچ منتشر شده که بعد نصب خود زیمبرا باید نصب شود. نصب آن بسیار آسان و straightforward است. کافیست به [[https:// | ||
+ | |||
+ | مراحل نصب پچ به اینصورت است که ابتدا سرویس را متوقف میکنید بعد یک فایل sh را اجرا میکنید و مجددا اجرا میکنید. سپس با دستور زیر ورژن زیمبرا را چک میکنید تا مطمئن شوید پچ نصب شده: | ||
+ | |||
+ | su - zimbra | ||
+ | zmcontrol -v | ||
+ | |||
+ | ===== تغییر بنر و تردمارک ===== | ||
+ | ۲۱. برای تنظیم بنر و تردمارک مجموعهای که از ایمیل سرور استفاده میکنند به دو تصویر یکی در ابعاد ۱۲۰ در ۳۵ و دیگری در ابعاد ۱۶۳ در ۳۶ با فرمت PNG و زمینه سفید نیاز داریم. از هر کدام هم ۲ نسخه سفید سیاه لازم داریم. این فایلها را باز کنید: | ||
+ | |||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | دنبال خطهایی که bannerLink دارند بگردید. کد Jquery مربوطه را پاک کنید. لینک را تغییر دهید. تایتل لینک و کپشن داخل span را عوض کنید. برای تغییر عکسها هم این چهار تا فایل را عوض کنید: | ||
+ | |||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | ===== تست rely سرور ===== | ||
+ | ۲۲. در فاز آخر باید تست کنیم همه چیز میزون باشد. اولین و مهمترین تست، تست مربوط به rely ایمیل سرور است که برای اینکار از telnet روی کامپیوتر شخصیمان استفاده میکنیم. به پورت ۲۵ تلنت بزنید: | ||
+ | |||
+ | telnet mail.example.com 25 | ||
+ | |||
+ | ببینید وصل میشه یا نه. اگر وصل شه: | ||
+ | |||
+ | Trying your.public.ip.address... | ||
+ | Connected to mail.example.com. | ||
+ | Escape character is ' | ||
+ | 220 mail.example.com ESMTP Postfix | ||
+ | |||
+ | دستور HELO را ارسال کنید: | ||
+ | |||
+ | HELO mail.example.com | ||
+ | |||
+ | خروجی: | ||
+ | |||
+ | 250 mail.example.com | ||
+ | |||
+ | فرام ایمیل را یکبار با ایمیل موجود روی سرور و یکبار با ایمیل ناموجود مشخص کنید: | ||
+ | |||
+ | mail from: [email protected] | ||
+ | |||
+ | خروجی: | ||
+ | |||
+ | 250 2.1.0 Ok | ||
+ | |||
+ | مقصد را مشخص کنید: | ||
+ | |||
+ | rcpt to: [email protected] | ||
+ | |||
+ | خروجی مشکلدار: | ||
+ | |||
+ | 250 2.1.5 Ok | ||
+ | |||
+ | خروجی که اگر rely بسته باشه انتظار میره نشون بده: | ||
+ | |||
+ | 554 5.7.1 < | ||
+ | |||
+ | یا نشون بده: | ||
+ | |||
+ | 554 5.7.1 < | ||
+ | |||
+ | اگر rely سرور بسته نیست قبل از اینکه جدی شود آن را جدی بگیرید و به هر طریقی که ممکن است ببندید. | ||
+ | ====== ترابلشوتینگ زیمبرا ====== | ||
+ | |||
+ | ===== منقضی شدن سرتیفیکیت https ===== | ||
+ | |||
+ | |||
+ | ممکن است بعد چند وقت موقع استارت کردن زیمبرا هنگام بالا آمدن سرویس ldap با این پیغام ارور مواجه شوید: | ||
+ | |||
+ | Unable to start TLS: SSL connect attempt failed error: | ||
+ | |||
+ | علت این پیغام این است که سرتیفیکیت شما renew نشده و در نتیجه ldap نمیتواند بالا بیاید. برای اینکه موقتا ldap بتواند بدون بررسی valid بودن سرتیفیکیت بالا بیاید دستورات زیر را با یوزر zimbra اجرا کنید: | ||
+ | |||
+ | zmlocalconfig -e ldap_starttls_required=false | ||
+ | zmlocalconfig -e ldap_starttls_supported=0 | ||
+ | |||
+ | حالا میتوانید زیمبرا را استارت کنید: | ||
+ | |||
+ | zmcontrol restart | ||
+ | |||
+ | حالا مشاهده خواهید کرد که زیمبرا بالا آمده ولی اگر نشانی آن را داخل بروزر وارد کنید با پیغام سرتیفیکیت ولید نیست مواجه میشوید. فرایند renew کردن سرتیفیکیت از دو گام تشکیل میشود. گام اول renew کردن خود سرتیفیکیت است و گام دوم deploy کردن سرتیفیکیت renew شده روی زیمبرا است. اگر از letsencrypt استفاده میکنید و قبلا سرتیفیکیت را به طور دستی نصب و تنظیم کردید باید این دو گام را به طور جداگانه انجام دهید ولی اگر از اسکریپت معرفی شده در بخش نصب سرتیفیکیت ssl در این مستند استفاده کردید دستور زیر را با یوزر روت اجرا کنید تا سرتیفیکیت renew و سپس deploy شود: | ||
+ | |||
+ | / | ||
+ | |||
+ | همچنین کرونتب سرور را چک کنید. دستور بالا باید در کرونتب سرور باشد تا مشکل به وجود آمده دیگر پیش نیاید. | ||
+ | |||
+ | ===== مصرف رم بالا ===== | ||
+ | اگر مقدار مصرف رم سرور بالاست یکبار زیمبرا را استوپ کنید. بعد میزان مصرف رم را چک کنید. اگر به طور معناداری کم نشد یعنی یک سری پروسسهای اضافی بسته نشدند و کاری هم انجام نمیدهند و رم را گرفتهاند. برای همین ده پروسسی که بیشترین مصرف رم را دارند را پیدا کنید. بعد از استوپ شدن زیمبرا آنهایی را که به زیمبرا مرتبطند و کیل نشدند دستی کیل کنید. میزان مصرف رم را بررسی کنید اگر مقدار آن منطقی شد زیمبرا را استارت کنید. میزان مصرف رم را بررسی کنید. اگر زیاد است یعنی مشکل حتی موقت حل نشده اگر کم است یعنی مشکل موقت حل شده. در حالت دوم مشکل را پیدا کنید و حل کنید. | ||
+ | |||
+ | برای بررسی ده پروسسی که بیشترین مصرف رم را دارند: | ||
+ | |||
+ | ps aux | awk ' | ||
+ | |||
+ | ===== چک کردن پورتهای in use ===== | ||
+ | چک کنید که سرویس postfix دیگری روی سرورتان بالا نباشد. ممکن است برنامهٔ دیگری مانند exim یا sendmail از پورت ۲۵ (پورت MTA) در حال استفاده باشند. اگر حدس میزنین چنین است، pid آن را پیدا کنید و کیل کنید و مطمئن شوید بار بعد که سرور ریست میشود این پروسس مجدد ران نمیشود. برای اینکه بفهمید چه پروسسهایی با چه PIDهایی روی این پورت لیسن میکنند: | ||
+ | |||
+ | lsof -i :25 | ||
+ | |||
+ | دبیان به صورت پیشفرض exim نصب میکند و آن را اجرا میکند و این برنامه روی پورت ۲۵ سیستم شما listen میکند و این باعث میشود MTA نتواند اجرا شود. نشانه این مشکل اینست که میبینید که وقتی زیمبرا را استارت میکنید بدون ارور استارت میشود و میگوید همه چیز با موفقیت استارت شده ولی وقتی status آن را چک میکنید میبینید که MTA استارت نشده و چیزی شبیه این مینویسد: | ||
+ | |||
+ | mta Stopped | ||
+ | postfix is not running | ||
+ | |||
+ | در این شرایط شما MTA را اینبار به طور مستقل استارت میکنید و ارورهای بیشتری مشاهده میکنید. اگر چنین شرایطی رخ داد بررسی کنید چه برنامههایی روی پورت ۲۵ لیسن میکنند و اگر exim نصب بود با این روش آنرا به صورت clean پاک کنید تا بعد از ریبوت کردن سرور exim دوباره اجرا نشود: | ||
+ | |||
+ | apt-get purge --remove exim4 exim4-base exim4-config exim4-daemon-light | ||
+ | |||
+ | |||
+ | ===== محدودیتهای اعمال شده ===== | ||
+ | دقت کنید یک smtpd_relay_restrictions و یک smtpd_recipient_restrictions و یک smtpd_sender_restrictions داریم و این سه تا با هم فرق دارند. با این دستور مقدار این متغیرها که معادل فهرست تمام محدودیتهای اعمال شده روی SMTP برای ریلی سرور و دریافت و ارسال ایمیل هست را مشاهده خواهید کرد: | ||
+ | |||
+ | postconf smtpd_recipient_restrictions | ||
+ | postconf smtpd_relay_restrictions | ||
+ | postconf smtpd_sender_restrictions | ||
+ | |||
+ | | ||
+ | |||
+ | smtpd_recipient_restrictions = check_policy_service inet: | ||
+ | |||
+ | smtpd_relay_restrictions = permit_sasl_authenticated, | ||
+ | |||
+ | smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch, | ||
+ | |||
+ | برای ادیت کردن مقادیر به دست آمده برای متغیرهای فوق این دستور را وارد کنید: | ||
+ | |||
+ | zmlocalconfig -e postfix_smtpd_sender_restrictions=" | ||
+ | |||
+ | zmlocalconfig -e postfix_smtpd_sender_restrictions=" | ||
+ | |||
+ | به این نکته دقت کنید که در نسخههای قدیمی تر پستفیکس postconf smtpd_relay_restrictions وجود نداشت و برای همین رولهای مربوط به آن در smtpd_recipient_restrictions نوشته میشد. شما اگر از نسخه جدیدتر آن استفاده میکنید رولی که در اولی نوشته شده را در دومی دوباره ننویسید. | ||
+ | |||
+ | ===== تنظیمات نتورکهای مجاز ===== | ||
+ | با این دستور فهرست دیفالت نتورکهای مجاز را مشاهده میکنید: | ||
+ | |||
+ | postconf -d mynetworks | ||
+ | |||
+ | با این دستور فهرست نتورکهای مجاز را مشاهده میکنید: | ||
+ | |||
+ | postconf mynetworks | ||
+ | |||
+ | با این دستور فهرست آیپی نتورکهای مجاز را ویرایش میکنید: | ||
+ | |||
+ | zmprov modifyServer mail.example.com zimbraMtaMyNetworks ' | ||
+ | |||
+ | مقدار نوشته شده بعد از اسلش عدد سابنت است که میتواند مقدار ۳۲ یا ۲۴ یا ۱۶ یا ۸ را داشته باشد. ۳۲ برای حالتیست که آیپی شما x.x.x.x باشد، ۲۴ وقتی که x.x.x.0 و ۱۶ وقتی که x.x.0.0 و ۸ برای وقتیست که x.0.0.0 باشد. example.com هم دامنه شما میباشد که باید به مقدار واقعی آن تغییر دهید. مقدار این متغیر به این فرمت باشد: | ||
+ | |||
+ | 127.0.0.0/8 y.y.y.y/32 x.x.x.x/32 | ||
+ | |||
+ | در اینجا x.x.x.x آیپی بیرونی و y.y.y.y آیپی داخلی سرور است. در اینجا شاید لازم باشد آیپی گیتوی را هم وارد کنید. در حالت کلی برای اینکه بفهمید چه آیپیهایی را لازم است وارد کنید [[https:// | ||
+ | |||
+ | ===== سرویس policyd ===== | ||
+ | سرویس policyd یک سرویس دلخواه است که امکانات زیادی در اختیار شما میگذارد و میتوانید روی زیمبرا نصب کنید. دستوری که برای فعال کردن policyd استفاده میشود: | ||
+ | |||
+ | zmprov mcf +zimbraMtaRestriction " | ||
+ | |||
+ | دقت کنید policyd روی پورت ۱۰۰۳۱ کار میکند و اگر فعال باشد و شما روی این پورت لیسن کنید پروسس آن را مشاهده خواهید کرد. | ||
+ | |||
+ | ===== لاگها و trace کردن مشکل ===== | ||
+ | تا حداقل یک ماه پس از نصب لاگهای زیمبرا را به صورت استیریم مشاهده کنید. هر وقت مشکلی پیش آمد یا ایمیلی ارسال یا دریافت نمیشد هم لاگ را باز کنید و بررسی کنید که هنگام ارسال یا دریافت ایمیل چه اتفاقی میافتد. این لاگ بهترین سرنخها را برای هر مشکلی میدهد. | ||
+ | |||
+ | tail -f / | ||
+ | |||
+ | در حالت پیشفرض سرور لاگ سرویسهای ایمیل از جمله postfix را در اینجا مینویسد که زیمبرا مسیر دیفالت آن را تغییر داده است: | ||
+ | |||
+ | / | ||
+ | |||
+ | در این فایل لاگهای مربوط به MTA و system status log و postfix و amavisd ذخیره میشود. بقیه لاگهای زیمبرا در شاخهٔ / | ||
+ | |||
+ | tail -f / | ||
+ | |||
+ | ==== ارورها و معنی هر کدام ==== | ||
+ | لاگ را مانیتور کنید. ارورهای داخل آن بهترین سرنخها هستند. اگر در لاگ چنین چیزی مشاهده کردید: | ||
+ | |||
+ | Feb 12 07:35:18 mail amavis[26021]: | ||
+ | Feb 12 07:35:18 mail postfix/ | ||
+ | |||
+ | یعنی یک نفر سعی کرده از روی سرور شما relay کند و ایمیل بفرستد ولی amavisd (سرویس تشخیص ایمیلهای spam که میخواهند از سرور شما سوء استفاده کنند و روی پورت ۱۰۰۳۲ لیسن میکند) جلوی آن را گرفته و اسپم تشخیص داده. درواقع عبارت discarded و spam به این موضوع اشاره میکنند که ایمیل اسپم تشخیص داده شده و ارسال نشده. اگر این را در لاگ مشاهده کردید از این نظر خوشحال باشید که amavisd درست کار میکند و جلوی ایمیلهای اسپم را میگیرد و از این نظر ناراحت که اسپمر میتواند به SMTP سرور متصل شود و فایروال جلوی آن را نمیگیرد و حتی خود اینکه میتواند relay کند باگ است. (حالا چه اسپم شود چه نشود) | ||
+ | |||
+ | یکی دیگر از ارورها میتواند این باشد که به صورت متناوب نوشته میشود: | ||
+ | |||
+ | Apr 19 09:56:06 mail postfix/ | ||
+ | Apr 19 09:56:06 mail postfix/ | ||
+ | |||
+ | این ارور یعنی MTA پایین است. کافیست MTA را start کنید. یکی از دلایل پایین آمدن MTA میتواند این باشد که از روی سرور شما relay کردهاند و به تعدادی ایمیل فرستادند که RAM یا CPU پر شدند و کرنل پروسس مربوطه را کیل کرده است. برای این موضوع dmesg را بخوانید. | ||
+ | |||
+ | اگر در لاگها با این پیغام مواجه شدید: | ||
+ | |||
+ | Apr 19 10:09:56 mail postfix/ | ||
+ | |||
+ | یعنی یک نفر به پورت SMTP سرور شما وصل شده و خواسته spam بفرسته ولی سرور اجازه relay از روی ایمیلسرور با آیپی آن شخص را نداده و ایمیل ارسال نشده. اگر ایمیلی که ارسال نشده و relay نشده اسپم نیست و ایمیل کاربران مجاز است باید بخش «تنظیمات نتورکهای مجاز» همین مقاله را مطالعه کنید. | ||
+ | |||
+ | ===== نحوه معرفی ایمیلها یا دامنههای غیرمجاز از طریق فایلهای متنی ===== | ||
+ | نسخههای قدیمیتر زیمبرا از hash استفاده میکردند ولی نسخههای جدیدتر آن از دیتابیسهای lmdb. پس فایلهای restriction را هش نکنید. مثلاً برای مشخص کردن فهرست restricted_senderها یعنی استثنائاتی که میخواهید برای رولها تعریف کنید باید از این فرمت استفاده کنید: | ||
+ | |||
+ | lmdb:/ | ||
+ | |||
+ | اگر جایی خط بالا با hash: شروع میشد بدانید اشتباه است. | ||
+ | |||
+ | ===== کیو ===== | ||
+ | مواقعی که میخواهند از روی سرور شما اسپم ارسال کنند و دریافت کننده تشخیص میدهد اسپم هست و ایمیل را دریافت نمیکند ایمیل در کیو deffered قرار میگیرد و ممکن است در مدت کوتاهی تعداد ایمیلهای اسپم موجود در این queue بسیار زیاد شود و ایمیلسرور و لاگها را شلوغ کند. حتی ممکن است انقدر زیاد شود که دیسک شما را پر کند! در / | ||
+ | |||
+ | / | ||
+ | |||
+ | ===== نکات آیپیتیبل و فایروال سنتاواس ===== | ||
+ | با این دستور لیست کل سرویسهای موجود روی سرور (حتی مواردی که نمیشود با chkconfig فهمید) را مشاهده خواهید کرد: | ||
+ | |||
+ | service --status-all | ||
+ | |||
+ | اگر به هر دلیلی کامند service پاک شده بود یعنی در / | ||
+ | |||
+ | yum install -y system-config-services | ||
+ | |||
+ | برای مشاهده وضعیت (بالا بودن یا پایین بودن) یک سرویس مثلاً سرویس iptables: | ||
+ | |||
+ | systemctl status iptables.service | ||
+ | |||
+ | نصب iptables به تنهایی کافی نیست. سنت یک firewalld دارد که آن iptable را مدیریت میکند. برای نصب firewalld: | ||
+ | |||
+ | yum install firewalld | ||
+ | |||
+ | برای ریست کردن فایروال و iptables در لینوکس باید قبل از استارت کردن یک سرویس باید آن را enable کنید: | ||
+ | |||
+ | systemctl disable firewalld.service | ||
+ | systemctl stop firewalld.service | ||
+ | systemctl enable iptables.service | ||
+ | systemctl enable ip6tables.service | ||
+ | systemctl start iptables.service | ||
+ | systemctl start ip6tables.service | ||
+ | |||
+ | اگر iptables یا فایروال مشکل دارد بهترین کار اینست که یکبار سرویسهای مربوطه را ریست کنید و بررسی کنید موقع استارت شدن سرویس یا موقع enable کردن آن مشکل میخورید سپس وضعیت سرویس را چک کنید. | ||
+ | |||
+ | ===== ارسال ایمیلهای اسپم از روی ۲۵ با داشتن پسورد یکی از یوزرها ===== | ||
+ | تنظیمات دیفالت زیمبرا اجازه میدهد در شرایطی که یوزرنیم و پسورد با هم مچ باشند کاربر از هر آدرسی حتی ایمیلهایی که موجود نیستند ایمیل بفرستد. این تنظیم وقتی که یک ایمیل هک شد مشکلزا میشود چون طرف با اون اطلاعات وارد میشود و از آدرسهای غلط اسپم میفرستد. برای جلوگیری از این قضیه باید زیمبرا را تنظیم کنید منتها نکتش اینست که میتوانید یک سری exception هم قائل شوید یعنی مثلا بگویید که از فلان آدرسها اگر خواست بتواند بفرستد. در [[https:// | ||
+ | |||
+ | ===== مشکل DDOS اسپمرها ===== | ||
+ | این فایل را باز کنید: | ||
+ | |||
+ | / | ||
+ | |||
+ | این خط را پیدا کنید: | ||
+ | |||
+ | smtp inet n - n - - smtpd | ||
+ | |||
+ | - آخر را به ۵ تغییر دهید. | ||
+ | |||
+ | همچنین [[http:// | ||
+ | |||
+ | ===== تیونکردن زمان باقیماندن ایمیلها در کیو ===== | ||
+ | صفحهٔ [[https:// | ||
+ | |||
+ | ===== مشکل پرمیشن فایلهای زیمبرا ===== | ||
+ | |||
+ | اگر هنگام ریستارت کردن زیمبرا، سرویس MTA استارت نمیشود و داخل ارور آن Permission denied میبینید احتمالا به این دلیل است که پرمیشن فایلهای زیمبرا درست نیست. برای اصلاح پرمیشنها با کاربر root دستور زیر را اجرا کنید: | ||
+ | |||
+ | / | ||
+ | |||
+ | ===== سرتیفیکیت ===== | ||
+ | هنگام لاگین به ایمیلتان با این ارور مواجه میشوید: | ||
+ | |||
+ | A network service error has occurred. | ||
+ | |||
+ | راهحل renew کردن سرتیفیکیت تولید شده توسط زیمبرا است: | ||
+ | |||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | ===== عوض کردن آدرس سرور در زیمبرا ===== | ||
+ | |||
+ | اولین گام اینست که آدرس ایمیل سرور را در فایل hostname اصلاح کنید: | ||
+ | |||
+ | nano / | ||
+ | |||
+ | سپس به یوزر زیمبرا وارد شوید و دستور تغییر server name را وارد کنید: | ||
+ | |||
+ | su - zimbra | ||
+ | / | ||
+ | |||
+ | سپس مشاهده خواهید کرد که زیمبرا یکی یکی تنظیمات را از روی دامنه قبلی میخواند و برای دامنهٔ جدید set میکند. | ||
+ | |||
+ | ===== ولید کردن سرتیفیکیت از طریق letsencrypt ===== | ||
+ | |||
+ | ==== راهکار دستی ==== | ||
+ | |||
+ | هدف پروژهٔ [[https:// | ||
+ | |||
+ | مرحله اول اینست که وب سرور را در یوزر zimbra متوقف کنید: | ||
+ | |||
+ | zmproxyctl stop | ||
+ | zmmailboxdctl stop | ||
+ | |||
+ | برای انجام مرحله بعد لازم است git روی سرور نصب باشد. در Centos مینیمال گیت به صورت پیشفرض نصب نیست. برای نصب گیت در Centos باید EPEL را قبلا فعال کرده باشید. سپس با دستور زیر گیت نصب میشود: | ||
+ | |||
+ | yum install -y git | ||
+ | |||
+ | حالا با دستور زیر یک کلون از پروژه letsencrypt بگیرید و به داخل دایرکتوری آن بروید: | ||
+ | |||
+ | git clone https:// | ||
+ | cd letsencrypt | ||
+ | |||
+ | یکی از اهداف پروژهٔ letsencrypt سادهسازی مراحل نصب سرتیفیکیت روی سرویسها و وباپلیکیشنها است. برای مثال letsencrypt در حال حاضر امکان نصب به صورت خودکار روی وبسرور apache و nginx را دارد و برای نصب و استفاده از سرتیفیکیت روی این وبسرورها کار خاصی لازم نیست انجام دهید. اما با توجه به اینکه از زیمبرا پشتیبانی نمیکند هنگام تولید سرتیفیکیت از گزینهٔ certonly استفاده میکنیم یعنی میگوییم فقط فایلهای سرتیفیکیت را میخواهیم و لازم نیست خودش برایمان نصب کند. همچنین از آپشن --no-upgrade استفاده میکنیم چون در ابتدای اجرای اسکریپت ورژن letsencryptی که کلون گرفتیم را چک میکند و اگر آخرین ورژن نباشد خودش را آپدیت میکند ولی اینکار با توجه به محدودیتهای پورتهای SSL در داخل با مشکل مواجه میشود: | ||
+ | |||
+ | ./ | ||
+ | |||
+ | در این مرحله تمام dependency های سیستمی را خودش نصب میکند و سپس وارد یک محیط CLI میشود که در آن ابتدا یک ایمیل میخواهد که ایمیل دلخواهتان را وارد میکنید. سپس دامنههایی که برای آنها certificate میخواهید را میپرسد که در اینجا شما باید دامنه mail.example.com را وارد کنید. مراحل ایجاد سرتیفیکیت با این پیغام تمام میشود: | ||
+ | |||
+ | | ||
+ | - Congratulations! Your certificate and chain have been saved at | ||
+ | / | ||
+ | will expire on 2016-03-04. To obtain a new version of the | ||
+ | certificate in the future, simply run Let's Encrypt again. | ||
+ | - If like Let's Encrypt, please consider supporting our work by: | ||
+ | | ||
+ | Donating to ISRG / Let's Encrypt: | ||
+ | Donating to EFF: https:// | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | -----BEGIN CERTIFICATE----- | ||
+ | MIIEqDCCA5CgAwIBAgIRAJgT9HUT5XULQ+dDHpceRL0wDQYJKoZIhvcNAQELBQAw | ||
+ | PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD | ||
+ | Ew5EU1QgUm9vdCBDQSBYMzAeFw0xNTEwMTkyMjMzMzZaFw0yMDEwMTkyMjMzMzZa | ||
+ | MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD | ||
+ | ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMTCCASIwDQYJKoZIhvcNAQEBBQAD | ||
+ | ggEPADCCAQoCggEBAJzTDPBa5S5Ht3JdN4OzaGMw6tc1Jhkl4b2+NfFwki+3uEtB | ||
+ | BaupnjUIWOyxKsRohwuj43Xk5vOnYnG6eYFgH9eRmp/ | ||
+ | PEjMfspNdxIknUcbWuu57B43ABycrHunBerOSuu9QeU2mLnL/ | ||
+ | dGfIf6WauFJhFBM/ | ||
+ | gGusSvMbkEl4L6KWTyogJSkExnTA0DHNjzE4lRa6qDO4Q/ | ||
+ | 4/ | ||
+ | EwEB/ | ||
+ | BggrBgEFBQcwAYYmaHR0cDovL2lzcmcudHJ1c3RpZC5vY3NwLmlkZW50cnVzdC5j | ||
+ | b20wOwYIKwYBBQUHMAKGL2h0dHA6Ly9hcHBzLmlkZW50cnVzdC5jb20vcm9vdHMv | ||
+ | ZHN0cm9vdGNheDMucDdjMB8GA1UdIwQYMBaAFMSnsaR7LHH62+FLkHX/ | ||
+ | MFQGA1UdIARNMEswCAYGZ4EMAQIBMD8GCysGAQQBgt8TAQEBMDAwLgYIKwYBBQUH | ||
+ | AgEWImh0dHA6Ly9jcHMucm9vdC14MS5sZXRzZW5jcnlwdC5vcmcwPAYDVR0fBDUw | ||
+ | MzAxoC+gLYYraHR0cDovL2NybC5pZGVudHJ1c3QuY29tL0RTVFJPT1RDQVgzQ1JM | ||
+ | LmNybDATBgNVHR4EDDAKoQgwBoIELm1pbDAdBgNVHQ4EFgQUqEpqYwR93brm0Tm3 | ||
+ | pkVl7/ | ||
+ | v0J20/ | ||
+ | ITv8S9ZYQ7oaoqs7HwhEMY9sibED4aXw09xrJZTC9zK1uIfW6t5dHQjuOWv+HHoW | ||
+ | ZnupyxpsEUlEaFb+/ | ||
+ | 6q78OMSdn875bNjdBYAqxUp2/ | ||
+ | f1w8DdnkabOLGeOVcj9LQ+s67vBykx4anTjURkbqZslUEUsn2k5xeua2zUk= | ||
+ | -----END CERTIFICATE----- | ||
+ | |||
+ | حالا باید تست کنیم که سرتیفیکیت تولید شده صحیح است. برای این منظور به / | ||
+ | |||
+ | / | ||
+ | |||
+ | در خروجی دستور باید چیزی شبیه این مشاهده کنید: | ||
+ | |||
+ | | ||
+ | ** Verifying cert.pem against privkey.pem | ||
+ | Certificate (cert.pem) and private key (privkey.pem) match. | ||
+ | Valid Certificate: | ||
+ | |||
+ | حالا سرتیفکیت را تولید کرده اید و نوبت به نصب آن رسیده. برای این منظور ابتدا یک بکآپ از سرتیفیکیت قبلی تهیه کنید: | ||
+ | |||
+ | cp -a / | ||
+ | |||
+ | پیش از شروع نصب سرتیفیکیت باید فایل کلید خصوصی را به دایرکتوری سرتیفیکیت commercial زیمبرا منتقل کنید: | ||
+ | |||
+ | cp / | ||
+ | |||
+ | حالا سرتیفکیت را با دستور زیر نصب کنید: | ||
+ | |||
+ | / | ||
+ | |||
+ | خروجی که میتوانید انتظار دیدنش داشته باشید: | ||
+ | |||
+ | | ||
+ | ** Verifying cert.pem against / | ||
+ | Certificate (cert.pem) and private key (/ | ||
+ | Valid Certificate: | ||
+ | ** Copying cert.pem to / | ||
+ | ** Appending ca chain chain.pem to / | ||
+ | ** Importing certificate / | ||
+ | ** NOTE: mailboxd must be restarted in order to use the imported certificate. | ||
+ | ** Saving server config key zimbraSSLCertificate...failed. | ||
+ | ** Saving server config key zimbraSSLPrivateKey...failed. | ||
+ | ** Installing mta certificate and key...done. | ||
+ | ** Installing slapd certificate and key...done. | ||
+ | ** Installing proxy certificate and key...done. | ||
+ | ** Creating pkcs12 file / | ||
+ | ** Creating keystore file / | ||
+ | ** Installing CA to / | ||
+ | |||
+ | به یوزر zimbra بروید و زیمبرا را ریست کنید: | ||
+ | |||
+ | zmcontrol restart | ||
+ | |||
+ | حالا سایت را باز کنید و از طریق مرورگر مشخصات سرتیفیکیت را چک کنید. | ||
+ | |||
+ | ==== استفاده از یک اسکریپت اتومیتد ==== | ||
+ | ابتدا خود letsencrypt را روی سرور نصب کنید: | ||
+ | |||
+ | yum -y install certbot | ||
+ | |||
+ | اگر روی اوبونتو هستید به خاطر یک باگی که certbot داخل apt دارد موقع دیپلوی کردن سرتیفیکیت دچار ارور میشود برای همین با snap باید certbot را نصب کنید: | ||
+ | |||
+ | apt install snapd | ||
+ | sudo snap install core; sudo snap refresh core | ||
+ | sudo snap install --classic certbot | ||
+ | sudo ln -s / | ||
+ | |||
+ | اسکریپت نصب letsencrypt روی zimbra را دانلود و به آن پرمیشن اجرا دهید: | ||
+ | |||
+ | wget https:// | ||
+ | chmod +x / | ||
+ | |||
+ | سپس hostname زیمبرا را با یوزر خودش چک کنید: | ||
+ | |||
+ | zmhostname | ||
+ | |||
+ | دستور زیر را اجرا کنید تا سرتیفیکیت را بگیرد و روی همهٔ سرویسها آن را اجرا کند. اگر میخواهید این سرتیفیکیت برای یک دامنهٔ دیگر به جز دامنهٔ اصلی که در hostname نوشتهشده هم صادر شود آن را روبروی اکسترا دامین وارد کنید: | ||
+ | |||
+ | certbot_zimbra.sh --new --extra-domain mail.example.ir | ||
+ | |||
+ | یک باگی در این اسکریپت وجود دارد که باعث میشود بعد از ساختن سرتیفیکیتها در مرحلهٔ دیپلوی کردن اکسریپت ساخته شده روی زیمبرا ارور دهد. برای همین میتوانید مراحل را به این شکل در اوبونتو طی کنید: | ||
+ | |||
+ | certbot_zimbra.sh --new --extra-domain mail.example.ir | ||
+ | certbot --force-renewal --preferred-chain "ISRG Root X1" renew | ||
+ | certbot_zimbra.sh -d | ||
+ | |||
+ | کرونتب سرور را چک کنید که خود certbot سرتیفیکیت ایجاد شده را renew نکند. زیرا بعد هر بار renew شدن باید سرتیفیکیت جدید توسط زیمبرا deploy شود. سپس دستور بهروزرسانی را به کرونتب کاربر root اضافه کنید. | ||
+ | |||
+ | crontab -e | ||
+ | |||
+ | دستور زیر یکبار در روز سرتیکفییت را renew میکند. EFF پیشنهاد میکند که اینکار را دو بار در روز انجام دهیم ولی یکبار هم کافیست چون برای دیپلوی سرتیفیکیت باید هر بار زیمبرا ریست شود و در نتیجه همین تعداد هم کافیست. | ||
+ | |||
+ | 12 5 * * * / | ||
+ | |||
+ | ===== اضافه کردن Domain Aliasها ===== | ||
+ | اگر دامنههای دیگری به جز example.com مانند example.ir هم دارید که میخواهید کاملا رفتار مشابهی با دامنهٔ اصلیتان داشته باشند و مثلا اگر کاربر [email protected] را ساختید به طور مشابه همان کاربر همان دسترسیها را به [email protected] را هم داشته باشد باید آنها را به عنوان domain alias اضافه کنید. سپس تنظیمات DNS مربوط به آن دامنه را مشابه تنظیمات DNS دامنهٔ example.com انجام دهید. | ||
+ | |||
+ | ===== اعطای اجازهٔ اتصال به سرور برای ارسال ایمیل ===== | ||
+ | |||
+ | برای ارسال ایمیل از طریق سرور بسته به تنظیمات سمت کلاینتی که استفاده میکنید باید به پورت 25 که مربوط SMTP است یا 465 که مربوط به SMTPS وصل شوید. اتصال به این پورت به دلایل امنیتی به طور پیشفرض سمت زیمبرا محدود شده است. برای همین باید آیپی کلاینتتان را برای اتصال به این پورت whitelist کنید. برای وایتلیست کردن آیپیهایی که میخواهید بتوانند به این پورت وصل شوند باید در پنل ادمین لاگین کنید و وارد بخش Global Settings شوید و سپس وارد بخش MTA شوید سپس آیپی مورد نظر را به MTA Trusted Networks اضافه کنید. | ||
+ | |||
+ | ===== تنظیمات سمت کلاینت ===== | ||
+ | |||
+ | این تنظیمات برای اتصال جیمیل و سایر کلاینتها برای دریافت به وسیلهٔ POP3 و ارسال به وسیلهٔ SMTP به شرح زیر است: | ||
+ | |||
+ | POP Server: mail.example.com | ||
+ | Port: 995 | ||
+ | Always use a secure connection (SSL) when retrieving mail. | ||
+ | |||
+ | SMTP Server: mail.example.com | ||
+ | Port: 25 | ||
+ | Secured connection using TLS | ||
+ | |||
+ | ===== اضافه کردن پالیسی برای عدم دریافت ایمیل توسط no-reply ===== | ||
+ | |||
+ | برای ایمیل no-reply چک کنید که quota حداقل مقدار ممکن مثلا 1 MB باشد و یک متن مناسب برای auto-reply بنویسید که اگر کسی به این آدرس ایمیل زد یک ایمیل برایش ریپلای شود و در آن بنویسد که این ایمیل در اختیار یک روبات است و نمیتواند ایمیل شما را دریافت کند. برای مشخص کردن مقدار quota باید از پنل ادمین به بخش Manage و سپس Accounts و سپس Advanced بروید. برای نوشتن متن auto-reply باید با حساب کاربری فوق لاگین کنید و به بخش preferences بروید و گزینهٔ out of office را انتخاب کنید و متن مورد نظرتان را وارد کنید. | ||
+ | |||
+ | ===== تنظیمات مورد نیاز برای اضافه کردن external account ===== | ||
+ | |||
+ | اگر میخواهید یک external account به صورت pop3 را به ایمیل خود متصل کنید تا محتوای آن را خالی کند ولی با پیغام ارور مواجه میشوید چون سرتیفیکیت آن تایید نشده از دستورات زیر استفاده کنید: | ||
+ | |||
+ | zmlocalconfig -e ssl_allow_mismatched_certs=true | ||
+ | zmlocalconfig -e ssl_allow_untrusted_certs=true | ||
+ | zmlocalconfig -e ssl_allow_accept_untrusted_certs=true | ||
+ | zmlocalconfig -e data_source_trust_self_signed_certs=true | ||
+ | zmcontrol restart | ||
+ | |||
+ | ===== نصب سرویس fail2ban ===== | ||
+ | سرویس fail2ban با استفاده از فایروال افرادی که برای انجام عمل مشخصی مانند ورود به سیستم در یک بازهٔ زمانی کوتاه چندین بار تلاش ناموفق داشته باشند را برای مدت موقتی ban میکند و اگر این موضوع باز هم تکرار شود برای مدت بیشتری یا به طور دائمی آیپی آنها را ban میکند. این سرویس باید برای هر برنامه به طور جداگانه تنظیم شود. یعنی مثلا برای ssh، برای اتصال به پورتهای smtp و ... برای ارسال ایمیل و برای اتصال به رابط وب و ورود از طریق آن به طور جداگانه باید تنظیم شود. | ||
+ | |||
+ | پکیج fail2ban را نصب کنید: | ||
+ | |||
+ | yum install -y fail2ban | ||
+ | |||
+ | فایل تنظیمات jailهای تنظیم شده برای fail2ban را باز کنید: | ||
+ | |||
+ | nano / | ||
+ | |||
+ | تنظیمات زیر را درون آن وارد کنید تا jail مربوط به sshd فعال شود. همچنین در تنظیمات زیر گفتیم که در ۶۰۰ ثانیهٔ اخیر اگر کسی سه بار تلاش ناموفق داشت ۳۶۰۰ ثانیه آیپی ایشان را ban کن. همچنین این قاعده برای ورود از طریق آیپی لوکالهاست صدق نمیکند. همچنین آدرس فایلی که لاگ مربوط به تلاشهای ناموفق را باید از آنجا بخواند و تشخیص دهد را هم به آن دادیم و شمارهٔ پورت پیشفرض ssh که ۲۲ است را تنظیم کردیم. در مقابل ignoreip آیپی داخلی سرور و آیپی سروری که معمولا با SMTP به این ایمیلسرور متصل خواهد شد تا ایمیل ارسال کند را اضافه کنید تا این آیپیها وایتلیست شوند. هر آیپی را با یک فاصله از هم جدا کنید. مقدار نوشته شده بعد از اسلش عدد سابنت است که میتواند مقدار ۳۲ یا ۲۴ یا ۱۶ یا ۸ را داشته باشد. ۳۲ برای حالتیست که آیپی شما x.x.x.x باشد، ۲۴ وقتی که x.x.x.0 و ۱۶ وقتی که x.x.0.0 و ۸ برای وقتیست که x.0.0.0 باشد. | ||
+ | |||
+ | [DEFAULT] | ||
+ | # Ban hosts for one hour: | ||
+ | bantime = 6000 | ||
+ | findtime = 600 | ||
+ | maxretry = 3 | ||
+ | ignoreip = 127.0.0.1/8 | ||
+ | | ||
+ | # Override / | ||
+ | banaction = iptables-multiport | ||
+ | | ||
+ | [sshd] | ||
+ | enabled = true | ||
+ | port = ssh | ||
+ | logpath = %(sshd_log)s | ||
+ | |||
+ | سپس fail2ban را ریست کنید و آن را enable کنید تا موقع reboot هم اجرا شود: | ||
+ | |||
+ | systemctl restart fail2ban | ||
+ | systemctl enable fail2ban | ||
+ | |||
+ | حال چند بار تلاش پشت سر هم ناموفق برای اتصال ssh به سرور انجام دهید. بعد چند بار نباید سرور از شما پسورد بپرسد و باید شما را ban کند. fail2ban لیست آیپیهای ban شده روی sshd را با دستور زیر به شما نشان میدهد: | ||
+ | |||
+ | fail2ban-client status sshd | ||
+ | |||
+ | همچنین میتوانید وضعیت fail2ban را چک کنید تا مطمئن شوید که jailها فعال شدهاند: | ||
+ | |||
+ | fail2ban-client status | ||
+ | |||
+ | در مرحلهٔ بعد تنظیمات fail2ban را برای حفاظت از ایمیلسرور انجام میدهیم. برای این منظور باید با استفاده از رگولار اکسپرشن مشخص کنیم که چه patternهایی اگر در لاگ ایمیلها و لاگ زیمبرا رخ دهد به معنی تلاش ناموفق است و در اینصورت انتظار داریم fail2ban چه actionای انجام دهد. | ||
+ | |||
+ | برای فعال کردن jailها [[https:// | ||
+ | |||
+ | nano / | ||
+ | |||
+ | همچنین filter مربوط به رخداد failure در authentication با postfix را در محل فیلترهای fail2ban بسازید: | ||
+ | |||
+ | wget https:// | ||
+ | |||
+ | و فیلتر مربوط به zimbra را در محل فیلترهای fail2ban بسازید: | ||
+ | |||
+ | wget https:// | ||
+ | |||
+ | چند تا رگولار اکسپرشن هستند که در نسخههای جدیدتر زیمبرا میتوانند در لاگها رخ دهند که نشاندهندهٔ fail شدن کاربر است ولی در این فایل وجود ندارد. این موارد را باید اضافه کنیم: | ||
+ | |||
+ | nano / | ||
+ | |||
+ | در بخش failregex این فایل اضافه میکنیم: | ||
+ | |||
+ | INFO .*ip=< | ||
+ | WARN .*ip=< | ||
+ | |||
+ | |||
+ | سپس fail2ban را ریست کنید تا تنظیمات اعمال شود: | ||
+ | |||
+ | systemctl restart fail2ban |