mailcow: dockerized یک مجموعه نرمافزاری کامل و آماده استفاده برای میزبانی ایمیل اختصاصی شما روی یک سرور است: MTA (Postfix)، صندوقهای ایمیل و پروتکلها (Dovecot)، فیلتر اسپم (Rspamd)، آنتیویروس اختیاری (ClamAV)، رابط مدیریت وب، SOGo (وبمیل / تقویم / ActiveSync)، پایگاه داده MariaDB، Redis، Nginx و غیره. همه چیز با Docker و Docker Compose هماهنگ میشود.
mailcow به چه کاری میآید؟
- متمرکز کردن ایمیل سازمان یا دامنههای شما روی زیرساختی که خودتان کنترل میکنید (نه صندوق «رایگان» مشترک با قوانین مبهم).
- مدیریت دامنهها، نامهای مستعار، سهمیهها و سیاستها از یک رابط وب واحد.
- بهرهمندی از مجموعهای که جامعه mailcow نگهداری میکند و بهروزرسانیهای مستند دارد، بهجای سرهمکردن دستی Postfix + Dovecot + اسپم + وبمیل.
مهم: ایمیلی که درست تحویل داده شود به DNS بینقص (MX، SPF، DKIM، DMARC)، یک PTR (rDNS) هماهنگ با نام میزبان سرور و اغلب اعتبار سالم IP نیاز دارد. بدون اینها، حتی یک نصب بینقص هم ممکن است در پوشه اسپم بیفتد.
محدودیتها و پیشنیازهای رسمی (باید رعایت شوند)
طبق مستندات mailcow — Prepare your system:
| منبع | حداقل مستند شده |
|---|---|
| RAM | 6 GiB + 1 GiB سواپ (پیکربندی پیشفرض) |
| دیسک | حداقل 20 GiB (بدون حجم صندوقهای ایمیل) |
| CPU | 1 GHz |
| معماری | x86_64 یا ARM64 |
برای mailcow پشتیبانی نمیشوند: OpenVZ، Virtuozzo، LXC و NASهایی مانند Synology/QNAP. یک VPS با مجازیسازی کامل (KVM، Hyper-V، ESXi و غیره) را ترجیح دهید، مثلاً سرویسی با 8 GiB RAM یا بیشتر اگر چند کاربر یا ActiveSync دارید.
میتوانید با غیرفعال کردن اجزای سنگین در mailcow.conf مصرف RAM را کم کنید (ادامه مطلب را ببینید): SKIP_CLAMD=y، SKIP_FTS=y.
هیچ سرویس ایمیل دیگری (Postfix/Exim نصبشده روی میزبان) نباید پورتهای 25، 80، 110، 143، 443، 465، 587، 993، 995، 4190 را اشغال کرده باشد. پیش از نصب بررسی کنید:
Bashss -tlpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'
پیشنیازهای DNS (پیش از شروع)
دستکم مستندات DNS در mailcow را دنبال کنید:
- FQDN: یک نام کاملاً معتبر برای سرور انتخاب کنید، مثلاً
mail.votredomaine.tld- این همانMAILCOW_HOSTNAMEشما خواهد بود. - یک رکورد A (و AAAA در صورت IPv6) که برای این نام به IP سرور VPS اشاره کند.
- MX دامنه که با اولویت درست به این FQDN اشاره کند.
- PTR (reverse DNS) مربوط به IP عمومی: باید با FQDN سرور یکی باشد (معمولاً نزد ارائهدهنده میزبانی / مدیر IP شما تنظیم میشود، نه در زون DNS دامنه).
- پس از نصب: SPF (TXT)، DKIM (از رابط mailcow)، DMARC (TXT
_dmarc).
ابزارهای بررسی که mailcow به آنها اشاره میکند: MXToolbox، Mail-tester.
مرحله 1 - بستههای سیستم (Debian / Ubuntu)
مطابق Install mailcow — System Packages:
Bashsudo apt update sudo apt install -y git openssl curl gawk coreutils grep jq
مرحله 2 - Docker Engine و Docker Compose v2
mailcow به Docker ≥ 24.0.0 و Docker Compose ≥ 2.0 نیاز دارد. مستندات Docker Engine بهروز را توصیه میکند، نه فقط نسخه ثابت مخازن Debian/Ubuntu.
نصب نمونه روی Debian/Ubuntu (اسکریپت رسمی Docker):
Bashcurl -sSL https://get.docker.com/ | CHANNEL=stable sudo sh sudo systemctl enable --now docker
سپس افزونه Compose (دستور docker compose، بدون خط تیره):
Bashsudo apt update sudo apt install -y docker-compose-plugin
بررسی کنید:
Bashdocker --version docker compose version
مرحله 3 - کلون کردن mailcow و تولید پیکربندی
روش رسمی از /opt و یک umask مناسب استفاده میکند:
Bashsudo su umask 0022 cd /opt git clone https://github.com/mailcow/mailcow-dockerized cd mailcow-dockerized ./generate_config.sh
اسکریپت FQDN را از شما میپرسد (مثلاً mail.example.com). فایل mailcow.conf را تولید میکند.
در صورت نیاز پارامترها را ویرایش کنید:
Bashnano mailcow.conf
بهویژه این موارد را بررسی کنید:
MAILCOW_HOSTNAME: باید FQDN عمومی سرور ایمیل باشد.- IPv6: از نسخه 2025-09 میتوانید اگر ارائهدهنده یا شبکه شما IPv6 را درست پشتیبانی نمیکند، غیرفعالسازی آن را اجباری کنید (از مشکلات مستند شدهای از نوع «open relay» مرتبط با NAT مربوط به IPv6 در Docker جلوگیری میکند):
BashENABLE_IPV6=false
پس از تغییر IPv6، راهاندازی مجدد کامل مجموعه سرویسها لازم است (در ادامه ببینید).
مرجع: Disable IPv6.
مرحله 4 - راهاندازی mailcow
همچنان از مسیر /opt/mailcow-dockerized:
Bashdocker compose pull docker compose up -d
دسترسی به مدیریت: https://VOTRE_MAILCOW_HOSTNAME/admin
اطلاعات ورود پیشفرض (فوراً تغییر دهید):
- نام کاربری:
admin - رمز عبور:
moohoo
منبع: Installation of mailcow — Starting mailcow.
ایمنسازی فوری پس از اولین ورود
- رمز عبور مدیر را تغییر دهید در رابط کاربری (هرگز
moohooرا نگه ندارید). - احراز هویت دومرحلهای (2FA) را فعال کنید برای حساب مدیر: TOTP، WebAuthn یا Yubi OTP - مستندات رسمی Two-Factor Authentication را ببینید.
- ساعت سیستم / NTP: برای TOTP الزامی است.
timedatectl statusرا بررسی کنید (NTP synchronized: yes). راهنما: Prepare your system — Date and Time. - HTTPS: از دسترسی HTTPS که mailcow ارائه میدهد استفاده کنید؛ اگر پروکسی معکوس ندارید، برای هدایت HTTP به HTTPS مستندات را دنبال کنید، مثلاً HTTP to 443.
- DKIM / SPF / DMARC: کلید DKIM را در رابط mailcow بسازید و رکوردهای TXT اعلامشده را منتشر کنید؛ SPF و DMARC را طبق prerequisite-dns تکمیل کنید.
فایروال، UFW و Docker (نکته حیاتی)
مستندات mailcow هشدار میدهد: UFW / firewalld روی میزبان ممکن است با Docker مشکل ایجاد کنند، چون قوانین کلاسیک INPUT همیشه ترافیک به سمت کانتینرها را آنطور که تصور میشود فیلتر نمیکنند. توصیه رسمی: قوانین را با زنجیره Docker تطبیق دهید (زنجیره DOCKER-USER) بهجای مسدود کردن کورکورانه. راهنماهایی را که mailcow به آنها اشاره میکند بخوانید، مثلاً unrouted.io — Docker firewall و بخش Firewall & Ports در prerequisite-system.
در سمت ارائهدهنده / فایروال شبکه، دستکم پورتهای ورودی مستند شده را باز کنید: 25، 80، 110، 143، 443، 465، 587، 993، 995، 4190 (TCP)، مگر اینکه در mailcow.conf شخصیسازی کرده باشید.
سبکتر کردن سرور (اختیاری)
در mailcow.conf (سپس بازسازی / راهاندازی مجدد سرویسهای مربوط طبق مستندات):
BashSKIP_CLAMD=y SKIP_FTS=y
مرجع: جدول Minimum System Resources در prerequisite-system.
MTU ≠ 1500 (OpenStack، برخی ابرها)
اگر شبکه شما MTU کوچکتری را الزامی میکند، مستندات میگوید شبکه را در docker-compose.yml تنظیم کنید:
YAMLnetworks: mailcow-network: driver_opts: com.docker.network.driver.mtu: 1450
Install — Troubleshooting MTU را ببینید.
بهروزرسانی و نگهداری
از روند مستند شده در مخزن استفاده کنید (اسکریپت update.sh که همراه mailcow ارائه میشود). از ولومهای Docker و دایرکتوری mailcow-dockerized (بهویژه mailcow.conf و data/) بکاپ بگیرید.
بازنشانی رمز عبور مدیر
در صورت از دست دادن دسترسی، mailcow یک اسکریپت ارائه میدهد (به Reset Passwords مراجعه کنید):
Bashcd /opt/mailcow-dockerized ./helper-scripts/mailcow-reset-admin.sh
پیوندهای مفید (مستندات رسمی)
روی یک VPS Infrawire، پیش از سفارش یا مهاجرت مطمئن شوید سرویس انتخابی با منابع و نوع مجازیسازی مورد انتظار mailcow مطابقت دارد.