SSD Nodes Learn Hosting plans →
கல்வி வழிகாட்டிகள் Matt Connorஆல் Matt Connor · புதுப்பிக்கப்பட்டது 2026-08-30

Gmail ஏற்கும் mailcow VPS அமைப்பு

mailcow நிறுவும் முன் outbound port 25-ஐச் சோதிக்கவும்: block இருந்தால் mail queue-ஐ விட்டு வெளியேறாது. பின்னர் Gmail-ன் 550 5.7.25 PTR நிராகரிப்பைத் தடுக்கும் DNS அமைப்பைச் செய்யவும்.

நீங்கள் உருவாக்குவது

நீங்கள் கட்டுப்பாட்டில் வைத்திருக்கும் ஒரு server-ல் முழுமையான mail server-ஐ அமைக்கப் போகிறீர்கள்: mail அனுப்பவும் பெறவும் SMTP, உங்கள் phone மற்றும் laptop ஒத்திசைவில் இருக்க IMAP, webmail client, மேலும் இரு திசைகளிலும் வரும் ஒவ்வொரு message-க்கும் score வழங்கும் spam filter. mailcow-dockerized, Postfix, Dovecot, Rspamd, SOGo webmail, MariaDB, Redis மற்றும் ACME client ஆகியவற்றை ஒரே Docker Compose stack-ல் ஒருங்கிணைக்கிறது. எனவே software அமைப்பதே கடினமான பகுதி அல்ல. இதை அரை மணி நேரத்தில் இயக்க முடியும்.

கடினமான பகுதி இதைச் சுற்றியுள்ள அனைத்தும். புதிய server-ஐ இணையத்தின் பிற mail services நம்பாமல் இருப்பது Email சேவையில் மிகவும் பொதுவானது. “இது இயங்குகிறது” என்பதற்கும் “Gmail ஒவ்வொரு message-ஐயும் அமைதியாக நிராகரிக்கிறது” என்பதற்கும் இடையிலான வித்தியாசம் நான்கு DNS records மற்றும் நீங்கள் முழுமையாகக் கட்டுப்படுத்த முடியாத ஒரு IP-reputation setting ஆகியவற்றைப் பொறுத்தது. ஏதேனும் service-ஐ rent செய்வதற்கு முன் கீழே உள்ள prerequisites-ஐ படிக்கவும். இதைப் படித்த பிறகு reputation-ஐ உருவாக்கும் முயற்சி மதிப்புடையதல்ல என்று முடிவு செய்தால், அதுவும் நியாயமான முடிவாகும். 2026-ல் உண்மையில் self-hosting செய்யத் தகுதியானவை பற்றிய எங்கள் சுருக்கம் இந்தக் காரணங்களுக்காகவே Email-ஐ “நீங்கள் உண்மையாக விரும்பினால் மட்டும்” என்ற பிரிவில் சேர்க்கிறது.

Prerequisites-களே project ஆகும்

இதில் ஒன்றைத் தவறவிட்டாலும், சென்றடையாத mail-ஐ நீங்கள் அனுப்புவீர்கள். ஒவ்வொன்றும் எவ்வளவு அடிக்கடி சிக்கலை ஏற்படுத்துகிறது என்பதன் தோராயமான வரிசையில்:

Outbound port 25 திறந்திருக்க வேண்டும். உங்கள் server, TCP port 25 மூலம் Gmail மற்றும் Microsoft-க்கு mail-ஐ deliver செய்யும். Spam-ஐத் தடுப்பதற்காக பல VPS மற்றும் cloud providers, outbound 25-ஐ இயல்பாக block செய்கின்றன. இந்த block அமைதியாக இருக்கும். Boot நேரத்தில் எந்த error-உம் தோன்றாது. அனைத்தும் சரியாக இயங்குவது போல் தெரியும். ஆனால் mail queue-ல் mail நிரந்தரமாக தேங்கிவிடும். எதையும் install செய்வதற்கு முன் இதைச் சோதிக்கவும். இது blocked ஆக இருந்தால், உங்கள் provider-இடம் அதைத் திறக்குமாறு support ticket அனுப்புவதுதான் ஒரே தீர்வு. சில providers பழைய accounts-க்கு இதைத் திறக்கின்றன. சில providers ஒருபோதும் திறக்காது.

பயன்படுத்தக்கூடிய reputation கொண்ட clean IP. முந்தைய tenant அனுப்பிய spam காரணமாக, மறுசுழற்சி செய்யப்பட்ட VPS IP-கள் ஏற்கனவே blocklists-ல் இடம்பெற்றிருக்கலாம். பயன்படுத்தத் தீர்மானிக்கும் முன், Spamhaus lookup அல்லது mxtoolbox போன்ற service மூலம் உங்கள் IP-ஐச் சரிபார்க்கவும். பட்டியலிடப்பட்ட IP இருந்தால், நீங்கள் code மூலம் சரிசெய்ய முடியாத rejections ஏற்படும்.

DNS-ஐக் கட்டுப்படுத்தும் உரிமையும் சரியான PTR record-உம். உங்கள் domain-ன் zone-ல் records சேர்க்க வேண்டும். மேலும், server-ன் IP-க்கான reverse DNS (PTR), உங்கள் mail hostname-ஐச் சுட்டிக்காட்ட வேண்டும். PTR பெரும்பாலும் உங்கள் DNS panel-ல் அமைக்கப்படாது. IP-ஐ வைத்திருக்கும் provider-இடமே அது நிர்வகிக்கப்படும். எனவே, அதை உங்கள் VPS provider-ன் control panel மூலமாகவோ அல்லது support ticket மூலமாகவோ அமைக்க வேண்டும்.

6 GiB RAM மற்றும் 2 vCPU வசதியான குறைந்தபட்ச அளவாகும். Private install-க்கு mailcow-ன் சொந்த minimum, 6 GiB RAM மற்றும் 1 GiB swap ஆகும். சில users இதைப் பயன்படுத்தத் தொடங்கியதும் 8 GiB RAM பரிந்துரைக்கப்படுகிறது. சுமார் 2.5 GiB-க்கு கீழே இருந்தால், kernel containers-ஐ நிறுத்தத் தொடங்காமல் இருக்க, generate_config.sh ClamAV virus scanner-ஐ disable செய்ய முன்வரும். தொடக்கத்திற்கு 20 GB SSD ஒதுக்கவும்.

Bare IP அல்ல, DNS name பயன்படுத்தவும். mail.example.com போன்ற hostname-ஐத் தேர்ந்தெடுக்கவும். அந்த ஒரே பெயரே உங்கள் MAILCOW_HOSTNAME, TLS certificate subject, PTR target மற்றும் SMTP banner ஆகும். எல்லா இடங்களிலும் இதே பெயரை ஒரே மாதிரியாகப் பயன்படுத்தவும்.

படி 1, outbound port 25 திறந்திருப்பதை உறுதிப்படுத்தவும்

இதை முதலில் செய்யவும். இது தோல்வியடைந்தால், மற்ற அனைத்தும் பயனற்ற முயற்சியாகிவிடும். புதிய VPS-இலிருந்து, உண்மையான mail server ஒன்றுடன் SMTP உரையாடலைத் தொடங்க முயற்சிக்கவும்:

sudo apt update && sudo apt install -y netcat-openbsd
nc -vz -w 5 gmail-smtp-in.l.google.com 25

சரியாகச் செயல்படும் முடிவு உடனடியாக கிடைக்கும்:

Connection to gmail-smtp-in.l.google.com (142.250.x.x) 25 port [tcp/smtp] succeeded!

blocked port முழு ஐந்து விநாடிகளும் காத்திருந்து, பின்னர் தோல்வியடையும்:

nc: connect to gmail-smtp-in.l.google.com port 25 (tcp) timed out: Operation now in progress

இந்த timeout தான் block இருப்பதற்கான அறிகுறி. இது உங்கள் firewall காரணமாக அல்ல; provider தரப்பிலான network filter காரணமாகும். எனவே local மாற்றம் எதுவும் இதைச் சரிசெய்யாது. இவ்வாறு ஒரு ticket திறக்கவும்: "Please enable outbound TCP port 25 for my VPS at <IP>; I am running a legitimate mail server." இது "succeeded" என்று திரும்பும் வரை mailcow-ஐ install செய்ய வேண்டாம். Inbound 25 என்பது வேறு பாதை என்பதை கவனிக்கவும்; பிற servers உங்களை அணுகும் இந்தப் பாதை பொதுவாகத் திறந்திருக்கும். Providers கட்டுப்படுத்துவது outbound பக்கத்தையே.

படி 2, DNS records-ஐ இப்போது அமைக்கவும்

DNS மாற்றங்கள் பரவுவதற்கு நேரம் ஆகும். எனவே installation செய்வதற்கு முன் அமைக்கக்கூடிய அனைத்தையும் publish செய்யவும். உங்கள் domain example.com, mail host mail.example.com, IP 10.0.0.10 என்று கருதுங்கள். உங்கள் zone-ல் இவற்றை உருவாக்கவும்:

mail.example.com.        A      10.0.0.10
mail.example.com.        AAAA   2001:db8::10          ; only if you have IPv6
example.com.             MX  10 mail.example.com.
example.com.             TXT    "v=spf1 mx -all"
_dmarc.example.com.      TXT    "v=DMARC1; p=none; rua=mailto:postmaster@example.com"

SPF record, “இந்த domain-க்காக என் MX மட்டும் mail அனுப்பலாம்; மற்றவற்றை reject செய்யவும்” என்று குறிப்பிடுகிறது. உங்கள் சொந்த mail bounce ஆகாமல் reports-ஐ கண்காணிக்க, DMARC-ஐ p=none நிலையில் தொடங்கவும். Alignment உறுதிப்படுத்தப்பட்டதும், அதை p=quarantine என்றும் பின்னர் p=reject என்றும் கடுமையாக்கவும். இரண்டு records-ஐ நோக்கமுடன் இன்னும் அமைக்கவில்லை: DKIM, இதை mailcow Step 6-ல் உங்களுக்காக generate செய்யும்; மற்றும் PTR, இதை உங்கள் provider-ன் panel-ல் இப்போது அமைக்க வேண்டும்.

10.0.0.10-க்கான PTR (reverse DNS)-ஐ mail.example.com ஆக அமைக்கவும். இது MAILCOW_HOSTNAME-ன் துல்லியமான மதிப்பாக இருக்க வேண்டும். பெரும்பாலானவர்கள் மறந்துவிடும் ஒரே record இதுதான். பெரிய providers இதன் அடிப்படையில் mail-ஐ reject செய்கின்றன. உங்கள் panel-ல் rDNS field இல்லையெனில், ticket ஒன்றை raise செய்யவும்.

படி 3, Docker-ஐ நிறுவுதல்

mailcow-க்கு Compose v2 plugin உடன் Docker Engine தேவை. Ubuntu வழங்கும் docker.io package-ஐ பயன்படுத்த வேண்டாம். அதில் Compose plugin இல்லை. அதற்கு பதிலாக Docker-ன் அதிகாரப்பூர்வ convenience script-ஐ பயன்படுத்தவும்:

curl -fsSL https://get.docker.com | sudo sh
sudo docker compose version

Docker Compose version v2.x வரி தோன்ற வேண்டும். docker compose version, docker: 'compose' is not a docker command எனக் காட்டினால், Docker Engine நிறுவப்பட்டுள்ளது; ஆனால் Compose plugin நிறுவப்படவில்லை. Docker-ன் repository-யிலிருந்து plugin-ஐ நிறுவவும். மேலே உள்ள script-ஐ மீண்டும் இயக்கவும். அல்லது எங்கள் Docker Compose அடிப்படை வழிகாட்டியை பின்பற்றவும். அதில் Docker-ன் சொந்த apt repository-யிலிருந்து இரண்டுமே அமைக்கப்படும்.

படி 4, mailcow-ஐ clone செய்து config-ஐ உருவாக்குதல்

cd /opt
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
umask
sudo ./generate_config.sh

umask முதலில் 0022 என்பதை காட்டுகிறதா எனச் சரிபார்க்கவும். ஒற்றுமையற்ற file mask இருந்தால் mailcow build செய்ய மறுக்கும். புதிய Ubuntu 24.04 root shell-ல் 0022 ஏற்கனவே அமைந்திருக்கும். அதன் பிறகு script முக்கியமான ஒரே தகவலைக் கேட்கும்: முழுமையான hostname. mail.example.com என்பதை உள்ளிடவும். இந்த மதிப்பு உங்கள் A record மற்றும் PTR record-க்கு சரியாகப் பொருந்த வேண்டும். இது முழு stack-மும் பயன்படுத்தும் ஒரே environment file-ஆன mailcow.conf-ஐ எழுதும். Web ports-ஐ (HTTP_PORT, HTTPS_PORT) மாற்ற வேண்டுமெனில் அல்லது சிறிய server-ல் ClamAV-ஐ முடக்க வேண்டுமெனில், இந்த file-ஐத் திறக்கவும்:

MAILCOW_HOSTNAME=mail.example.com
HTTP_PORT=80
HTTPS_PORT=443
SKIP_CLAMD=n          # set to y to drop the virus scanner on a <2.5 GiB box

குறைந்த RAM கொண்ட server-ல் SKIP_FTS=y மற்றொரு முக்கியமான அமைப்பாகும். mailcow ஆவணங்களில் குறிப்பிடப்படும் memory-ஐ அதிகமாகப் பயன்படுத்தும் இரண்டாவது அம்சம் full-text search ஆகும். இதைத் தவிர்த்தால் webmail-ல் body-text search மட்டும் கிடைக்காது.

Host-ல் ஏற்கனவே வேறு ஏதாவது service அவற்றைப் பயன்படுத்தவில்லை என்றால் HTTP_PORT=80 மற்றும் HTTPS_PORT=443 ஆகியவற்றை மாற்றாமல் விடவும். Certificate பெற mailcow-ன் built-in ACME client-க்கு port 80 internet-ல் இருந்து reachable நிலையில் இருக்க வேண்டும். அதனால் அதே server-ல் தனியான nginx-plus-Certbot அமைப்பை இயக்கக் கூடாது. mailcow தனது TLS-ஐ உள்ளகமாகவே issue செய்து renew செய்கிறது; port 80/443-ல் இரண்டாவது service listen செய்தால் அது செயல்படாது. Public web front end தேவைப்படும் பிற services-க்கும் இதே விதி பொருந்தும். எனவே Jellyfin library-ஐ 90s video store போல Halcyon reskin செய்யும் அமைப்பு, 443-ல் தனக்கென reverse proxy எதிர்பார்ப்பதால், வேறு host-ல் இருக்க வேண்டும். Public web port எதையும் கேட்காத service மட்டும் விதிவிலக்கு: self-hosted RustDesk relay தனது 21115 முதல் 21119 வரையிலான range-ல் மட்டும் listen செய்யும். ஆகவே போதுமான bandwidth headroom இருந்தால், அதை இதே server-ல் பகிர்ந்து இயக்கலாம்.

படி 5, stack-ஐ தொடங்கி உள்நுழையவும்

sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

இந்த pull சுமார் இரண்டு டஜன் images-ஐ fetch செய்யும்; இதற்கு சில நிமிடங்கள் ஆகலாம். docker compose ps ஒவ்வொரு container-மும் running (அல்லது healthy) எனக் காட்டியதும், browser-ல் https://mail.example.com-ஐத் திறக்கவும். இயல்புநிலை admin login-க்கு username admin, password moohoo. Access → Administrators என்பதன் கீழ் உள்ள admin UI-ல் இந்த password-ஐ உடனடியாக மாற்றவும். Browser NET::ERR_CERT_AUTHORITY_INVALID என எச்சரித்தால், ACME certificate இன்னும் issue செய்யப்படவில்லை. இது broken என்று கருதுவதற்கு முன் கீழே உள்ள ACME failure பகுதியைப் பார்க்கவும்; முதல் ஒன்று அல்லது இரண்டு நிமிடங்களுக்கு self-signed placeholder இருப்பது இயல்பானது.

படி 6, domain, mailbox சேர்த்து DKIM-ஐ வெளியிடுதல்

Admin UI-ல் Mail Setup பக்கத்தைத் திறக்கவும் (Configuration → Mail Setup). Domains tab-ன் கீழ் Add domain-ஐ click செய்து example.com-ஐ உள்ளிடவும். பின்னர் Mailboxes-ன் கீழ் Add mailbox-ஐ click செய்து password-உடன் you@example.com-ஐ உருவாக்கவும். இது IMAP மூலம் ஏற்கனவே அணுகக்கூடிய செயல்படும் mailbox ஆகும்.

இப்போது DKIM key-ஐ அமைக்கவும். Configuration → ARC/DKIM keys பகுதிக்குச் செல்லவும். Domain-ஐ சேர்த்தபோது mailcow ஏற்கனவே key-ஐ உருவாக்கியிருக்கலாம். உருவாக்கவில்லை என்றால், அங்கேயே generate செய்யவும். Domain-ஐத் தேர்ந்தெடுத்து, selector dkim-ஐ மாற்றாமல் வைத்துக்கொள்ளவும். 2048-bit-ஐத் தேர்ந்தெடுத்து Add-ஐ click செய்யவும். காட்டப்படும் நீளமான TXT value-ஐ copy செய்து, அதை இவ்வாறு publish செய்யவும்:

dkim._domainkey.example.com.  TXT  "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqh...long-key...QAB"

mailcow-ன் Domains பக்கத்தில் DNS button உள்ளது. அது எதிர்பார்க்கப்படும் ஒவ்வொரு record-ஐயும் பட்டியலிட்டு, உண்மையில் publish செய்யப்பட்டுள்ள value-க்கு எதிராக பச்சை tick அல்லது சிவப்பு cross-ஐக் காட்டும். இதை checklist-ஆகப் பயன்படுத்தி, deliverability-ஐச் சோதிப்பதற்கு முன் ஒவ்வொரு row-வும் பச்சையாக இருக்குமாறு உறுதிப்படுத்தவும். Publish செய்த பிறகும் DKIM row சிவப்பாக இருந்தால், key TXT chunks-ஆகத் தவறாகப் பிரிக்கப்பட்டிருக்கலாம். 2048-bit key, ஒரே TXT string-க்கான 255-character வரம்பை விட நீளமானது. எனவே அதை ஒரே logical value-ஆக paste செய்து, உங்கள் DNS host அதை chunks-ஆகப் பிரிக்க அனுமதிக்கவும்.

படி 7, deliverability-ஐச் சோதித்து 10/10 பெறுங்கள்

mail-tester.com-க்கு சென்று, அது காட்டும் random address-ஐ copy செய்யுங்கள். பின்னர் உங்கள் புதிய mailbox-இலிருந்து அதற்கு ஒரு message அனுப்புங்கள். https://mail.example.com/SOGo-ல் SOGo webmail-க்கு login செய்து, அங்கிருந்தும் message அனுப்புங்கள். அதன் பிறகு "Then check your score" என்பதைக் click செய்யுங்கள்.

10/10 பெறுவதை இலக்காகக் கொள்ளுங்கள். பொதுவாக score குறைவதற்கான காரணங்கள்:

  • SPF aligned இல்லை, உங்கள் MX/SPF record இல்லை அல்லது sending IP அதில் உள்ளடக்கப்படவில்லை. SPF TXT-ஐ மீண்டும் சரிபார்க்கவும்.
  • DKIM signature verify ஆகவில்லை, dkim._domainkey TXT இல்லை, இன்னும் propagate ஆகவில்லை, அல்லது அதன் வடிவம் சிதைந்துள்ளது. இது மிகவும் பொதுவான தவறு.
  • PTR இல்லை / PTR mismatch, reverse DNS mail.example.com-ஆக resolve ஆகவில்லை. இதை provider-ல் சரிசெய்யவும்.
  • Blocklist-ல் பட்டியலிடப்பட்டுள்ளது, உங்கள் IP-யின் முந்தைய reputation இதற்குக் காரணமாக இருக்கலாம். Delisting கோரிக்கை விடுக்கவும் அல்லது சிறந்த reputation கொண்ட IP-ஐக் கேட்கவும்.

Score 10/10 ஆகும் வரை Gmail அல்லது Outlook-க்கு உண்மையான mail அனுப்ப வேண்டாம். குறைந்த score-உம் புதிய IP-யும் சேர்ந்தால், முதல் நாளிலேயே உங்கள் domain flag செய்யப்படும்.

படி 8, உண்மையான mail client-ஐ இணைக்கவும்

இந்த settings-ஐ பயன்படுத்தி Thunderbird, Apple Mail, அல்லது உங்கள் phone-ஐ server-க்கு இணைக்கவும். அனைத்திற்கும் server host mail.example.com ஆகும்:

  • IMAP: port 993, SSL/TLS (அல்லது STARTTLS உடன் 143)
  • SMTP submission: port 465, SSL/TLS (அல்லது STARTTLS உடன் 587)
  • Username: முழு address, you@example.com
  • Password: நீங்கள் அமைத்த mailbox password

client mail-ஐ port 25 வழியாக ஒருபோதும் அனுப்ப வேண்டாம். அந்த port server-to-server தொடர்புகளுக்கு மட்டுமே பயன்படுத்தப்படும். mailcow அங்கு authenticated submission-ஐ வழங்காது; அதில் அமைக்கப்பட்ட client-ன் connection மறுக்கப்படும். client Relay access denied என்று காட்டினால், அது port 25 வழியாக அல்லது authentication இல்லாமல் mail அனுப்ப முயல்கிறது. உங்கள் mailbox credentials-ஐ பயன்படுத்தி அதை 465 அல்லது 587 port-க்கு மாற்றவும்.

உண்மையில் முக்கியமானவற்றை backup எடுக்கவும்

mailcow ஒவ்வொரு stateful volume-ஐயும் snapshot செய்யும் backup script-ஐ வழங்குகிறது. இதை external disk அல்லது mounted remote-க்கு இயக்கவும்:

sudo MAILCOW_BACKUP_LOCATION=/opt/mailcow-backups \
  ./helper-scripts/backup_and_restore.sh backup all

all ஆறு அம்சங்களை capture செய்கிறது. இவற்றில் ஏதேனும் ஒன்றை இழந்தால் data இழக்கப்படும்: vmail (உண்மையான mailboxes), crypt (vmail-ஐ decrypt செய்யும் keys; இது இல்லாமல் பயனற்றவை), mysql (domains, users, aliases மற்றும் settings-ஐ வைத்திருக்கும் MariaDB), redis (queue மற்றும் cache state), rspamd (கற்ற spam/ham தரவு), மற்றும் postfix (mail queue). இது ஒரு helper container-க்குள் இயங்கி compressed archives-ஐ எழுதுகிறது. ஆகவே stack இயங்கிக்கொண்டிருக்கும்போதும் backups consistent-ஆக இருக்கும். இதை nightly cron job மூலம் automate செய்யவும். பழைய sets-ஐ prune செய்ய --delete-days 14-ஐயும் சேர்க்கவும். வேலை செய்வதை நிறுத்தும் cron job அமைதியாக fail ஆகும். எனவே script-ன் exit status-ஐ நீங்கள் உண்மையில் கவனிக்கும் இடத்துக்கு அனுப்பவும்; self-hosted ntfy server அதே cron entry-யிலிருந்து ஒரு வரி curl மூலம் notification அனுப்பி, failure நடந்த இரவே உங்கள் phone-க்கு தெரிவிக்கும். Restore செய்ய அதே script-ஐ restore உடன் இயக்கவும். இது snapshots-ஐ பட்டியலிட்டு, மீட்டெடுக்க வேண்டியவற்றைத் தேர்ந்தெடுக்க அனுமதிக்கும். ஒருபோதும் test-restore செய்யாத backup என்பது நம்பிக்கை மட்டுமே; scratch VPS-க்கு ஒரு dry run செய்யவும்.

படி 10, அட்டவணைப்படி புதுப்பிக்கவும்

mailcow அதன் சொந்த script மூலம் update செய்யப்படுகிறது. அந்த script புதிய code-ஐ பெறுகிறது, mailcow.conf-ஐ migrate செய்கிறது, images-ஐ முன்கூட்டியே பெறுகிறது, மேலும் containers-ஐ சரியான வரிசையில் restart செய்கிறது:

cd /opt/mailcow-dockerized
sudo ./update.sh --check   # reports whether an update exists, changes nothing
sudo ./update.sh           # applies it

முதலில் backup எடுக்கவும் (படி 9). schema migration-ஐ பின்னுக்குத் திருப்புவது கடினம். Updates அடிக்கடி வெளியிடப்படுகின்றன. அவற்றில் internet-facing daemons-க்கான security fixes அடங்கும். எனவே mail server-ஐ பல மாதங்கள் update செய்யாமல் விட வேண்டாம். Update காரணமாக ஏதேனும் container unhealthy நிலையில் இருந்தால், sudo docker compose logs --tail=50 <service>-mailcow மீண்டும் இயங்கத் தொடங்காத daemon-ன் பெயரை காட்டும்.

வலுப்படுத்தல் குறித்த குறிப்பு

mailcow தனது சொந்த netfilter service (netfilter-mailcow) ஒன்றை இயக்குகிறது. இது mail மற்றும் webmail ports மீது தொடர்ந்து முயற்சிகள் மேற்கொள்ளும் IP-களை ban செய்கிறது. எனவே mail பகுதி இயல்பாகவே பாதுகாக்கப்படுகிறது. ஆனால் host-இல் உள்ள SSH இதன் வரம்புக்குள் வராது. அது தொடர்ந்து வெளிப்படையாக இருக்கும்; brute-force முயற்சிகளும் தொடர்ந்து நடக்கும். இந்த build-ஐ SSH auth log-ஐ கண்காணிக்கும் Fail2ban மற்றும் key-only login உடன் பயன்படுத்தவும். mailcow admin UI-க்கு வலுவான password அமைக்கவும். முடிந்தால், அதை public internet-இலிருந்து விலக்கி வைக்கவும் அல்லது VPN-ன் பின்னால் இயக்கவும்.

தோல்வி நிலைகள், துல்லியமான strings உடன்

Mail queues நிரம்பி, mail ஒருபோதும் deliver ஆகவில்லை. sudo docker compose exec postfix-mailcow postqueue -p-ஐ இயக்கவும் அல்லது admin UI-யின் mail queue-ஐப் பார்க்கவும்; entries பின்வரும் செய்தியுடன் deferred நிலையில் இருக்கும்:

status=deferred (connect to gmail-smtp-in.l.google.com[142.250.x.x]:25: Connection timed out)

இதற்குக் காரணம், provider outbound port 25-ஐத் தடுத்திருப்பதாகும் (Step 1). எந்த config மாற்றமும் இதைச் சரிசெய்யாது; ticket ஒன்றைத் திறக்கவும். இது DNS பிரச்சினையும் அல்ல, TLS பிரச்சினையும் அல்ல. Remote MX-க்கு port 25-ல் காணப்படும் timed out என்ற சொல்தான் இதற்கான தெளிவான அறிகுறி.

Gmail அனைத்தையும் spam எனக் குறிக்கிறது அல்லது bounce செய்கிறது. Gmail-ல் message-ஐத் திறந்து, "Show original" என்பதைத் தேர்ந்தெடுத்து, auth results-ஐப் பார்க்கவும். dkim=fail அல்லது dkim=none என்பது உங்கள் dkim._domainkey TXT record இல்லை, தவறாக உள்ளது, அல்லது இன்னும் propagate ஆகவில்லை என்பதைக் குறிக்கும். ARC/DKIM page காட்டும் value-ஐ அப்படியே மீண்டும் publish செய்து, TTL முடியும் வரை காத்திருக்கவும். spf=fail என்பது SPF/MX records உங்கள் IP-ஐ உள்ளடக்கவில்லை என்பதைக் குறிக்கும். Alignment மிகவும் முக்கியமானது; ஒரு check தோல்வியடைந்தாலே message spam-க்கு செல்லக்கூடும்.

Connect செய்யும்போது பெரிய providers நிராகரிக்கின்றன. Bounces அல்லது Postfix logs-ல் Gmail-ன் PTR rejection பின்வருமாறு காணப்படும்:

550-5.7.25 [10.0.0.10] The IP address sending this message does not have a PTR
550-5.7.25 record setup, or the corresponding forward DNS entry does not match
550 5.7.25 the sending IP. As a policy, Gmail does not accept messages from IPs
550 5.7.25 with missing PTR records.

550 5.7.25 code என்பது reverse DNS இல்லை அல்லது பொருந்தவில்லை என்பதைக் குறிக்கும். Provider-ன் நிர்வாகப் பகுதியில், உங்கள் IP-க்கான PTR-ஐ mail.example.com என அமைக்கவும் (Step 2). Forward (A) மற்றும் reverse (PTR) records ஒன்றுக்கொன்று பொருந்த வேண்டும். இரண்டும், mailcow பிற servers-க்கு அறிமுகப்படுத்தும் அதே host-ஐக் குறிப்பிட வேண்டும்.

Browser-ல் certificate warning தோன்றி, ஒருபோதும் நீங்கவில்லை. acme-mailcow container உண்மையான certificate-ஐப் பெறத் தவறியுள்ளது. அதன் log-ஐப் பார்க்கவும்:

sudo docker compose logs acme-mailcow | tail -n 40

Cannot validate any hostnames, skipping Let's Encrypt for 1 hour. போன்ற line அல்லது challenge failure என்பது port 80 internet-லிருந்து reachable இல்லை, அல்லது A record இந்த server-ஐச் சுட்டிக்காட்டவில்லை என்பதைக் குறிக்கும். mail.example.com இந்த server-க்கு resolve ஆகிறதா என்பதை உறுதிப்படுத்தவும். Host firewall ஏதேனும் இருந்தால், அதன் வழியாக 80 மற்றும் 443 ports-ஐத் திறக்கவும். வேறு எந்த process-உம் அந்த ports-ல் bind ஆகவில்லை என்பதையும் உறுதிப்படுத்தவும். காரணத்தைச் சரிசெய்த பிறகு, ஒரு மணி நேர back-off முடியும் வரை காத்திருக்காமல் sudo docker compose restart acme-mailcow மூலம் client-ஐ restart செய்யவும்.

FAQ

Self-hosting email உண்மையில் பயனுள்ளதா?

Data ownership, வரம்பற்ற aliases, மற்றும் முழுமையான control வேண்டும் என்றால், ஆம். VPS-ன் விலைக்கு mailcow ஒரு professional stack-ஐ வழங்குகிறது. ஆனால் deliverability-ஐ பராமரிப்பது தொடர்ச்சியான நிர்வாகப் பணியாகும்: IP reputation, DNS alignment, மற்றும் blocklist monitoring ஆகியவை ஒருபோதும் முழுமையாக முடிவதில்லை. ஒரே நாள் ஒருவர் spam folder-ல் இருப்பதால் உங்களுக்கு இழப்பு ஏற்படும் mission-critical business address என்றால், managed provider-ஐத் தேர்வு செய்வதே நடைமுறைக்கு ஏற்றது. Convenience-ஐ விட control-க்கு மதிப்பு அளித்து, அதை முறையாகப் பராமரிக்க முடிந்தால் self-host செய்யுங்கள். Email மட்டும் அல்லாமல், உங்கள் data பிறருடைய servers-ல் இருக்கக் கூடாது என்பதே உண்மையான தேவையாக இருந்தால், வேறு யாரும் முடிவு செய்ய முடியாத service-இல் தொடங்குங்கள்: ஒரு photo library-க்கு deliverability பிரச்சினையே இல்லை. அதே வகையான VPS-ல் அந்த அமைப்புக்குத் தேவையான RAM அளவுகள் மற்றும் backup commands குறித்து எங்கள் PhotoPrism மற்றும் Immich ஒப்பீடு விளக்குகிறது.

Outbound port 25 block செய்யப்பட்டுள்ளதா என்பதை எவ்வாறு அறியலாம்?

Server-இலிருந்து nc -vz -w 5 gmail-smtp-in.l.google.com 25 இயக்கவும். "succeeded!" என்ற செய்தி வந்தால் அது open நிலையில் உள்ளது. Pause பிறகு timed out கிடைத்தால், உங்கள் provider அதை block செய்துள்ளது. Self-hosted server mail-ஐ receive செய்ய முடிந்தும் send செய்ய முடியாததற்கான மிகவும் பொதுவான காரணம் இதுவாகும். இதற்கான ஒரே தீர்வு provider port-ஐ open செய்வதுதான்; எந்த local setting-உம் இதை மாற்றாது.

எனது mail இன்னும் Gmail-ன் spam folder-ல் செல்வது ஏன்?

பெரும்பாலான சந்தர்ப்பங்களில் authentication chain சரியாக இல்லாததே காரணம். Gmail-ல் "Show original" என்பதைப் பயன்படுத்தி spf=pass, dkim=pass, மற்றும் dmarc=pass ஆகியவற்றைத் தேடுங்கள். dkim=fail கிடைத்தால், dkim._domainkey TXT record இல்லை அல்லது தவறாக அமைக்கப்பட்டுள்ளது என்று பொருள். PTR mismatch அல்லது sending history இல்லாத புதிய IP-யும் deliverability-ஐ பாதிக்கும். முதலில் mail-tester.com-ல் 10/10 பெறுங்கள். பின்னர் IP-ஐ மெதுவாக warm up செய்யுங்கள்: தினமும் சில messages அனுப்பி, படிப்படியாக எண்ணிக்கையை அதிகரிக்கவும். முதல் நாளிலேயே அதிக volume அனுப்ப வேண்டாம்.

நான் எவற்றை backup செய்ய வேண்டும்?

backup_and_restore.sh backup all இயக்கி, முழு backup set-ஐ server-க்கு வெளியே வைத்திருக்கவும். இதில் vmail (mailboxes), crypt (அவற்றை decrypt செய்யும் keys), MariaDB database (domains, users, aliases, settings), Redis, Rspamd-ன் learned data, மற்றும் Postfix queue ஆகியவை அடங்கும். பலர் கவனிக்காமல் விடுவது crypt volume-ஐத்தான். அது இல்லாமல் vmail backup-ஐ வாசிக்க முடியாது; அது unreadable ciphertext ஆக இருக்கும். குறைந்தது ஒருமுறை scratch box-ல் restore செய்து சோதிக்கவும்.

2 GB VPS-ல் mailcow-ஐ இயக்க முடியுமா?

சௌகரியமாக இயக்க முடியாது. சுமார் 2.5 GiB-க்கு குறைவான memory இருந்தால் ClamAV-ஐ disable செய்ய generate_config.sh பரிந்துரைக்கிறது. அதற்குப் பிறகும் Rspamd, ClamAV, Dovecot, மற்றும் MariaDB ஆகியவை memory-க்காக போட்டியிடும். எனவே உண்மையான load-ல் swap மற்றும் OOM kills ஏற்படும். நிலையான single-user install-க்கான குறைந்தபட்ச அளவாக 6 GiB memory மற்றும் 1 GiB swap-ஐக் கருதுங்கள். இரண்டு பேருக்கும் மேற்பட்டவர்கள் இதை நம்பத் தொடங்கும் உடனே 8 GiB-க்கு upgrade செய்யுங்கள்.