فارسی (Farsi)
€EUR

نصب و ایمن‌سازی mailcow روی VPS لینوکس

5 min
سرور مجازی (VPS/VDS)

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:

منبعحداقل مستند شده
RAM6 GiB + 1 GiB سواپ (پیکربندی پیش‌فرض)
دیسکحداقل 20 GiB (بدون حجم صندوق‌های ایمیل)
CPU1 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 را اشغال کرده باشد. پیش از نصب بررسی کنید:

Bash
ss -tlpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'

پیش‌نیازهای DNS (پیش از شروع)

دست‌کم مستندات DNS در mailcow را دنبال کنید:

  1. FQDN: یک نام کاملاً معتبر برای سرور انتخاب کنید، مثلاً mail.votredomaine.tld - این همان MAILCOW_HOSTNAME شما خواهد بود.
  2. یک رکورد A (و AAAA در صورت IPv6) که برای این نام به IP سرور VPS اشاره کند.
  3. MX دامنه که با اولویت درست به این FQDN اشاره کند.
  4. PTR (reverse DNS) مربوط به IP عمومی: باید با FQDN سرور یکی باشد (معمولاً نزد ارائه‌دهنده میزبانی / مدیر IP شما تنظیم می‌شود، نه در زون DNS دامنه).
  5. پس از نصب: SPF (TXT)، DKIM (از رابط mailcow)، DMARC (TXT _dmarc).

ابزارهای بررسی که mailcow به آن‌ها اشاره می‌کند: MXToolbox، Mail-tester.

مرحله 1 - بسته‌های سیستم (Debian / Ubuntu)

مطابق Install mailcow — System Packages:

Bash
sudo 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):

Bash
curl -sSL https://get.docker.com/ | CHANNEL=stable sudo sh sudo systemctl enable --now docker

سپس افزونه Compose (دستور docker compose، بدون خط تیره):

Bash
sudo apt update sudo apt install -y docker-compose-plugin

بررسی کنید:

Bash
docker --version docker compose version

مرحله 3 - کلون کردن mailcow و تولید پیکربندی

روش رسمی از /opt و یک umask مناسب استفاده می‌کند:

Bash
sudo 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 را تولید می‌کند.

در صورت نیاز پارامترها را ویرایش کنید:

Bash
nano mailcow.conf

به‌ویژه این موارد را بررسی کنید:

  • MAILCOW_HOSTNAME: باید FQDN عمومی سرور ایمیل باشد.
  • IPv6: از نسخه 2025-09 می‌توانید اگر ارائه‌دهنده یا شبکه شما IPv6 را درست پشتیبانی نمی‌کند، غیرفعال‌سازی آن را اجباری کنید (از مشکلات مستند شده‌ای از نوع «open relay» مرتبط با NAT مربوط به IPv6 در Docker جلوگیری می‌کند):
Bash
ENABLE_IPV6=false

پس از تغییر IPv6، راه‌اندازی مجدد کامل مجموعه سرویس‌ها لازم است (در ادامه ببینید).

مرجع: Disable IPv6.

مرحله 4 - راه‌اندازی mailcow

همچنان از مسیر /opt/mailcow-dockerized:

Bash
docker compose pull docker compose up -d

دسترسی به مدیریت: https://VOTRE_MAILCOW_HOSTNAME/admin

اطلاعات ورود پیش‌فرض (فوراً تغییر دهید):

  • نام کاربری: admin
  • رمز عبور: moohoo

منبع: Installation of mailcow — Starting mailcow.

ایمن‌سازی فوری پس از اولین ورود

  1. رمز عبور مدیر را تغییر دهید در رابط کاربری (هرگز moohoo را نگه ندارید).
  2. احراز هویت دومرحله‌ای (2FA) را فعال کنید برای حساب مدیر: TOTP، WebAuthn یا Yubi OTP - مستندات رسمی Two-Factor Authentication را ببینید.
  3. ساعت سیستم / NTP: برای TOTP الزامی است. timedatectl status را بررسی کنید (NTP synchronized: yes). راهنما: Prepare your system — Date and Time.
  4. HTTPS: از دسترسی HTTPS که mailcow ارائه می‌دهد استفاده کنید؛ اگر پروکسی معکوس ندارید، برای هدایت HTTP به HTTPS مستندات را دنبال کنید، مثلاً HTTP to 443.
  5. 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 (سپس بازسازی / راه‌اندازی مجدد سرویس‌های مربوط طبق مستندات):

Bash
SKIP_CLAMD=y SKIP_FTS=y

مرجع: جدول Minimum System Resources در prerequisite-system.

MTU ≠ 1500 (OpenStack، برخی ابرها)

اگر شبکه شما MTU کوچکتری را الزامی می‌کند، مستندات می‌گوید شبکه را در docker-compose.yml تنظیم کنید:

YAML
networks: 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 مراجعه کنید):

Bash
cd /opt/mailcow-dockerized ./helper-scripts/mailcow-reset-admin.sh

پیوندهای مفید (مستندات رسمی)

روی یک VPS Infrawire، پیش از سفارش یا مهاجرت مطمئن شوید سرویس انتخابی با منابع و نوع مجازی‌سازی مورد انتظار mailcow مطابقت دارد.

با آخرین پیشنهادها، تخفیف‌ها و تبلیغات ویژه به‌روز بمانید.

مشاهده تخفیف‌ها

ما از کوکی استفاده می‌کنیم

ما از کوکی‌های تحلیلی برای بهبود تجربه شما در سایت خود استفاده می‌کنیم. هیچ داده‌ای به اشخاص ثالث فروخته نمی‌شود. اطلاعات بیشتر در سیاست حفظ حریم خصوصی ما.