SSD Nodes Learn
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-07-25

VPSలో mailcow: Gmail స్వీకరించే సెల్ఫ్-హోస్ట్ ఇమెయిల్

mailcow ఇన్‌స్టాల్ చేసే ముందు outbound port 25 టెస్ట్ చేయండి: బ్లాక్ అయితే మెయిల్ క్యూ నుండి బయటకు రాదు. తర్వాత Gmail 550 5.7.25 PTR రిజెక్షన్ ఆపే DNS సెట్ చేయండి.

మీరు నిర్మించేది ఏమిటి

మీకు సొంతమైన ఒక సర్వర్‌లో పూర్తి మెయిల్ సర్వర్: పంపడానికి మరియు స్వీకరించడానికి SMTP, మీ ఫోన్ మరియు ల్యాప్‌టాప్ సమకాలీకరణంలో ఉండటానికి IMAP, ఒక వెబ్‌మెయిల్ క్లయింట్, మరియు రెండు దిశలలో ప్రతి సందేశాన్ని స్కోర్ చేసే ఒక స్పామ్ ఫిల్టర్. mailcow-dockerized అనేది Postfix, Dovecot, Rspamd, SOGo webmail, MariaDB, Redis మరియు ఒక ACME క్లయింట్‌ను ఒకే Docker Compose స్టాక్‌లో అందిస్తుంది, కాబట్టి సాఫ్ట్‌వేర్ కష్టమైన భాగం కాదు. మీరు దాన్ని అరగంటలో రన్ చేయగలుగుతారు.

కష్టమైన భాగం దాని చుట్టూ ఉన్న ప్రతిదీ. ఇమెయిల్ అనేది ఒక సేవ, దీనిలో మిగతా ఇంటర్నెట్ కొత్త సర్వర్‌ను చురుకుగా అపనమ్మకం చేస్తుంది. "అది పనిచేస్తుంది" అనే దశ నుండి "Gmail ప్రతి సందేశాన్ని నిశ్శబ్దంగా తినేస్తుంది" అనే దశకు మధ్య ఉన్న అంతరం నాలుగు DNS రికార్డులు మరియు మీరు పూర్తిగా నియంత్రించలేని ఒక IP-రెప్యుటేషన్ సెట్టింగ్‌పై ఆధారపడి ఉంటుంది. మీరు ఏదైనా అద్దెకు తీసుకునే ముందు దిగువ ఉన్న ముందస్తు అవసరాలను చదవండి. వాటిని చదివిన తర్వాత, ఆ రెప్యుటేషన్ కృషి విలువ లేదని మీరు నిర్ణయించుకుంటే, అది సరైన సమాధానం — సరిగ్గా ఈ కారణాల వల్లే 2026లో వాస్తవానికి సెల్ఫ్-హోస్ట్ చేయడానికి విలువైనవి ఏవనే మా సారాంశం ఇమెయిల్‌ను "మీకు నిజంగా అవసరం ఉంటే మాత్రమే" అనే వర్గం కింద చేరుస్తుంది.

ముందస్తు అవసరాలే ఈ ప్రాజెక్టు

వీటిలో ఏ ఒక్కటి కూడా దాటవేస్తే మీరు పంపిన మెయిల్ ఎప్పటికీ చేరదు. ప్రతి ఒక్కటి ఎంత తరచుగా వినియోగదారులను ఇబ్బందిలో పడేస్తుందో దాని క్రమంలో:

అవుట్‌బౌండ్ పోర్ట్ 25 తప్పనిసరిగా ఓపెన్‌లో ఉండాలి. మీ సర్వర్ Gmail మరియు Microsoft కి TCP పోర్ట్ 25 ద్వారా మెయిల్ పంపిస్తుంది. స్పామ్‌ను నిరోధించడానికి చాలా VPS మరియు క్లౌడ్ ప్రొవైడర్లు అవుట్‌బౌండ్ 25 ను డిఫాల్ట్‌గా బ్లాక్ చేస్తారు, మరియు ఈ బ్లాక్ నిశ్శబ్దంగా ఉంటుంది — బూట్ సమయంలో ఎలాంటి ఎర్రర్ రాదు, ప్రతిదీ ఆరోగ్యంగా కనిపిస్తుంది, మరియు మెయిల్ కేవలం క్యూలో శాశ్వతంగా నిలిచిపోతుంది. మీరు ఏదైనా ఇన్‌స్టాల్ చేసే ముందు దీన్ని పరీక్షించండి. అది బ్లాక్ చేయబడి ఉంటే, ప్రొవైడర్‌ను దాన్ని ఓపెన్ చేయమని అడిగే సపోర్ట్ టికెట్ చేయడమే ఏకైక పరిష్కారం; కొన్ని ప్రొవైడర్లు పాత ఖాతాల కోసం అలా చేస్తారు, కొన్ని ఎప్పటికీ చేయవు.

మంచి రెప్యుటేషన్‌తో కూడిన క్లీన్ IP. రీసైకిల్ చేసిన VPS IPలు తరచుగా మునుపటి వినియోగదారుని స్పామ్ కారణంగా ఇప్పటికే బ్లాక్‌లిస్ట్‌లో ఉంటాయి. కట్టుబడక ముందు Spamhaus lookup లేదా mxtoolbox వంటి సర్వీసులో మీ IPని తనిఖీ చేయండి. లిస్ట్ చేయబడిన IP అంటే కోడింగ్ ద్వారా పరిష్కరించలేని తిరస్కారాలు వస్తాయి.

DNS నియంత్రణ మరియు సరైన PTR రికార్డ్. మీ డొమైన్ జోన్‌కు రికార్డులు జోడించాలి, మరియు మీ సర్వర్ IP కోసం మీ మెయిల్ హోస్ట్‌నేమ్‌ను సూచిస్తూ రివర్స్ DNS (PTR) కావాలి. PTR దాదాపు ఎప్పుడూ మీ DNS ప్యానెల్‌లో సెట్ చేయబడదు — అది IPని యాజమాన్యం పట్టిన వారి వద్ద ఉంటుంది, కాబట్టి అది మీ VPS ప్రొవైడర్ కంట్రోల్ ప్యానెల్‌లో లేదా టికెట్ ద్వారా సెట్ చేయబడుతుంది.

6 GiB RAM మరియు 2 vCPU సౌకర్యవంతమైన అట్టడుదో. ప్రైవేట్ ఇన్‌స్టాలేషన్ కోసం mailcow యొక్క కనీస అవసరం 6 GiB RAM మరియు 1 GiB swap, కొంతమంది వినియోగదారులు ఆధారపడితే 8 GiB సలహా ఇవ్వబడుతుంది. దాదాపు 2.5 GiB కంటే తక్కువకు, కర్నల్ కంటైనర్‌లను కిల్ చేయడం ప్రారంభించకుండా ఉండటానికి generate_config.sh ClamAV వైరస్ స్కానర్‌ను డిసేబుల్ చేయమని ఆఫర్ చేస్తుంది. ప్రారంభానికి 20 GB SSD ఇవ్వండి.

DNS పేరు, కేవలం బేర్ IP కాదు. mail.example.com వంటి హోస్ట్‌నేమ్‌ను ఎంచుకోండి. ఆ ఒక్క పేరే మీ MAILCOW_HOSTNAME, మీ TLS సర్టిఫికెట్ సబ్జెక్ట్, మీ PTR టార్గెట్, మరియు మీ SMTP బ్యానర్ అవుతుంది. ప్రతచోటా దాన్ని స్థిరంగా ఉంచండి.

దశ 1 — అవుట్‌బౌండ్ పోర్ట్ 25 తెరిచి ఉందని నిరూపించండి

దీన్ని ముందుగా చేయండి. ఇది విఫలమైతే మిగతా ప్రయత్నాలన్నీ వృథా. కొత్త VPS నుండి, నిజమైన మెయిల్ సర్వర్‌తో 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!

బ్లాక్ చేయబడిన పోర్ట్ పూర్తి ఐదు సెకన్లు వేచి ఉంటుంది, తర్వాత విఫలమవుతుంది:

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

ఆ టైమౌట్ అనేది బ్లాక్. అది ప్రొవైడర్-సైడ్ నెట్‌వర్క్ ఫిల్టర్, మీ ఫైర్‌వాల్ కాదు, కాబట్టి దాన్ని లోకల్ మార్పులతో సరిచేయలేం. టికెట్ తెరవండి: "దయచేసి <IP> వద్ద నా VPS కోసం అవుట్‌బౌండ్ TCP పోర్ట్ 25 ను ప్రారంభించండి; నేను ఒక సక్రమ మెయిల్ సర్వర్‌ను నడుపుతున్నాను." ఇది "succeeded" అని రాసే వరకు mailcow ను ఇన్‌స్టాల్ చేయవద్దు. ఇన్‌బౌండ్ 25 (ఇతర సర్వర్లు మిమ్మల్ని చేరుకోవడం) ఒక ప్రత్యేక మార్గం మరియు సాధారణంగా తెరిచే ఉంటుంది — ప్రొవైడర్లు థ్రోటిల్ చేసేది అవుట్‌బౌండ్ సైడ్ మాత్రమే.

దశ 2 — ఇప్పుడు DNS రికార్డులను సెట్ చేయండి

DNS మార్పులు ప్రచారం అవ్వడానికి సమయం పడుతుంది, కాబట్టి ఇన్‌స్టాల్ చేయడానికి ముందు మీరు చేయగలిగినవన్నీ ప్రచురించండి. మీ డొమైన్ example.com, మీ మెయిల్ హోస్ట్ mail.example.com, మరియు IP 10.0.0.10 అని అనుకుందాం. మీ జోన్‌లో, ఇవి సృష్టించండి:

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 రికార్డు "ఈ డొమైన్ కోసం నా MX మాత్రమే పంపగలదు, మిగతావాటిని తిరస్కరించు" అని చెబుతుంది. మీ స్వంత మెయిల్‌ను బౌన్స్ చేయకుండా నివేదికలను చూడటానికి DMARC ను p=none వద్ద ప్రారంభించండి; అలైన్‌మెంట్ రుజువైన తర్వాత p=quarantine కు, ఆపై p=reject కు టైటెన్ చేయండి. రెండు రికార్డులు ఉద్దేశపూర్వకంగా ఇంకా లేవు: DKIM, దీనిని mailcow దశ 6 లో మీ కోసం జనరేట్ చేస్తుంది, మరియు PTR, దీనిని మీరు ఇప్పుడు మీ ప్రొవైడర్ ప్యానెల్‌లో సెట్ చేస్తారు.

10.0.0.10 కోసం PTR (reverse DNS) ను mail.example.com కు సెట్ చేయండి — అంటే MAILCOW_HOSTNAME యొక్క సరైన విలువ. చాలా మంది మర్చిపోయే రికార్డు ఇదే, మరియు పెద్ద ప్రొవైడర్లు దీనిపై తిరస్కరిస్తారు. మీ ప్యానెల్‌లో rDNS ఫీల్డ్ లేకపోతే, టికెట్ పెట్టండి.

దశ 3 — Docker ను సంస్థాపించండి

mailcow కు Compose v2 ప్లగిన్ తో Docker Engine అవసరం. Ubuntu యొక్క docker.io ప్యాకేజీ కంటే Docker యొక్క అధికారిక సౌకర్య స్క్రిప్ట్ ను ఉపయోగించండి, ఎందుకంటే ఆ ప్యాకేజీలో Compose ప్లగిన్ అసలు ఉండదు:

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 ప్లగిన్ సంస్థాపించబడలేదు. ఆ ప్లగిన్ ను Docker రిపోజిటరీ నుండి సంస్థాపించండి — పై స్క్రిప్ట్ ను మళ్లీ నడపండి, లేదా మా Docker Compose ప్రాథమిక మార్గదర్శిని ను అనుసరించండి, ఇది రెండిటినీ Docker యొక్క స్వంత apt రిపోజిటరీ నుండి సెటప్ చేస్తుంది.

దశ 4 — mailcow ను క్లోన్ చేసి కాన్ఫిగ్ ను ఉత్పత్తి చేయండి

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

ముందుగా umask అనేది 0022 ను ప్రింట్ చేస్తుందో చెక్ చేయండి — సరైన ఫైల్ మాస్క్ లేకుండా mailcow బిల్డ్ చేయడాన్ని తిరస్కరిస్తుంది, మరియు కొత్త Ubuntu 24.04 root షెల్ ఇప్పటికే మీకు 0022 ను ఇస్తుంది. ఆ తర్వాత స్క్రిప్ట్ ముఖ్యమైన ఒక్క విషయాన్ని అడుగుతుంది: పూర్తి అర్హత కలిగిన హోస్ట్ పేరు. mail.example.com ను ఎంటర్ చేయండి — ఈ విలువ మీ A రికార్డ్ మరియు PTR తో ఖచ్చితంగా సరిపోలాలి. అది mailcow.conf ను రాస్తుంది, ఇది మొత్తం స్టాక్ చదివే ఏకైక ఎన్విరాన్మెంట్ ఫైల్. వెబ్ పోర్ట్‌లను (HTTP_PORT, HTTPS_PORT) మార్చడానికి లేదా చిన్న సర్వర్‌లో ClamAV ను డిసేబుల్ చేయడానికి అవసరమైతే దాన్ని ఓపెన్ చేయండి:

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

SKIP_FTS=y అనేది తక్కువ-RAM గల సర్వర్‌పై మరొక ఎంపిక: ఫుల్-టెక్స్ట్ సెర్చ్ అనేది mailcow డాక్స్ పేర్కొన్న రెండవ అతిపెద్ద మెమరీ వినియోగదారు, మరియు దాన్ని దాటవేయడం వల్ల వెబ్‌మెయిల్‌లో బాడీ-టెక్స్ట్ సెర్చ్ మాత్రమే మీకు అందుబాటులో ఉండదు.

HTTP_PORT=80 మరియు HTTPS_PORT=443 ను వదిలేయండి, అదే హోస్ట్‌పై ఇంకా ఏదైనా వాటిని ఉపయోగిస్తుంది తప్ప — సర్టిఫికేట్ పొందడానికి mailcow యొక్క అంతర్గత ACME క్లయింట్‌కు ఇంటర్నెట్ నుండి పోర్ట్ 80 చేరుకోగలగాలి. అందుకే మీరు ఒకే సర్వర్‌పై ప్రత్యేకమైన nginx-plus-Certbot సెటప్ ను రన్ చేయరు; mailcow దాని స్వంత TLS ను అంతర్గతంగా జారీ చేస్తుంది మరియు రెన్యూ చేస్తుంది, మరియు 80/443 పై ఆధిపత్యం చెలాయించే రెండవ సర్వీస్ దాన్ని విచ్ఛిన్నం చేస్తుంది.

5వ దశ — స్టాక్‌ను ప్రారంభించి లాగిన్ చేయండి

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

పుల్ ఆపరేషన్ దాదాపు రెండు డజన్ల ఇమేజ్‌లను సంపాదిస్తుంది; కొన్ని నిమిషాలు అనుమతించండి. docker compose ps ప్రతి కంటైనర్‌ను running (లేదా healthy) గా చూపించినప్పుడు, బ్రౌజర్‌లో https://mail.example.com తెరవండి. డిఫాల్ట్ అడ్మిన్ లాగిన్ యూజర్‌నేమ్ admin, పాస్‌వర్డ్ moohoo. ఆ పాస్‌వర్డ్‌ను అడ్మిన్ UI లో Access → Administrators కింద వెంటనే మార్చండి. బ్రౌజర్ NET::ERR_CERT_AUTHORITY_INVALID హెచ్చరిస్తే, ACME సర్టిఫికేట్ ఇంకా జారీ కాలేదు — అది పాడైపోయిందని భావించడానికి ముందు కింద ఉన్న ACME వైఫల్యాన్ని చూడండి; మొదటి నిమిషం లేదా రెండు నిమిషాల పాటు సెల్ఫ్-సైన్డ్ ప్లేస్‌హోల్డర్ సాధారణమే.

దశ 6 — ఒక డొమైన్‌ను, మెయిల్‌బాక్స్‌ను జోడించండి, DKIMను ప్రచురించండి

నిర్వాహక UIలో, Mail Setup పేజీని తెరవండి (Configuration → Mail Setup). Domains ట్యాబ్‌లో Add domain క్లిక్ చేసి example.com నమోదు చేయండి. తర్వాత, Mailboxes కింద, Add mailbox క్లిక్ చేసి ఒక పాస్‌వర్డ్‌తో you@example.com ను సృష్టించండి. అది IMAP ద్వారా ఇప్పటికే చేరుకోగలిగే పనిచేసే మెయిల్‌బాక్స్.

ఇప్పుడు DKIM కీ. Configuration → ARC/DKIM keys కి వెళ్ళండి. మీరు డొమైన్‌ను జోడించినప్పుడు mailcow ఇప్పటికే ఒక కీని ఉత్పత్తి చేసి ఉండవచ్చు. లేకపోతే, అక్కడ ఒకటి ఉత్పత్తి చేయండి — డొమైన్‌ను ఎంచుకోండి, సెలెక్టర్ dkim ను అలాగే ఉంచండి, 2048-bit ఎంచుకోండి, Add క్లిక్ చేయండి. అది చూపించే సుదీర్ఘ TXT విలువను కాపీ చేసి దీనిలా ప్రచురించండి:

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

mailcow యొక్క Domains పేజీలో ఒక DNS బటన్ ఉంది. అది అది ఆశించే ప్రతి రికార్డును జాబితా చేస్తుంది. వాస్తవానికి ప్రచురించబడిన వాటికి సరైన వాటికి ఆకుపచ్చ టిక్ మరియు తప్పు వాటికి ఎర్ర గుర్తు చూపిస్తుంది. దాన్ని మీ చెక్‌లిస్ట్‌గా ఉపయోగించండి — డెలివరబిలిటీని పరీక్షించే ముందు ప్రతి వరుసను ఆకుపచ్చగా మార్చండి. ప్రచురించిన తర్వాత DKIM వరుస ఎర్రగా ఉంటే, కీ సరైన రీతిలో TXT భాగాలుగా విభజించబడలేదని అర్థం. ఒకే TXT స్ట్రింగ్‌కు 255 అక్షరాల పరిమితి కంటే 2048-bit కీ పెద్దదిగా ఉంటుంది. కాబట్టి దాన్ని ఒక లాజికల్ విలువగా అతికించండి. మీ DNS హోస్ట్ దాన్ని మీ కోసం భాగాలుగా విభజించనివ్వండి.

దశ 7 — డెలివరబిలిటీని పరీక్షించండి మరియు 10/10 స్కోరు కోసం ప్రయత్నించండి

mail-tester.com కి వెళ్లండి. అక్కడ ప్రదర్శించే యాదృచ్ఛిక చిరునామాను కాపీ చేయండి. మీ కొత్త మెయిల్‌బాక్స్ నుండి ఆ చిరునామాకు ఒక సందేశం పంపండి — https://mail.example.com/SOGo వద్ద SOGo webmail కి లాగిన్ అవ్వండి మరియు అక్కడ నుండి పంపండి. తర్వాత "Then check your score" పై క్లిక్ చేయండి.

10/10 స్కోరు లక్ష్యంగా పెట్టుకోండి. సాధారణ మినహాయింపులు మరియు వాటి కారణాలు:

  • SPF సర్దుబాటు లేదు — మీ MX/SPF రికార్డ్ లేదు లేదా పంపే IP కవర్ కాలేదు. SPF TXT ని మళ్లీ తనిఖీ చేయండి.
  • DKIM సంతకం ధృవీకరణ విఫలమవుతోందిdkim._domainkey TXT లేదు, ఇంకా ప్రచారం అవుతోంది, లేదా పాడైంది. ఇది అత్యంత సాధారణ తప్పు.
  • PTR లేదు / PTR సరిపోలదు — reverse DNS, mail.example.com కి పరిష్కరించబడటం లేదు. ప్రొవైడర్ వద్ద దీన్ని సరిచేయండి.
  • బ్లాక్‌లిస్ట్‌లో ఉంది — మీ IP యొక్క పూర్వ రిప్యుటేషన్. డిలిస్టింగ్ అభ్యర్థించండి లేదా శుభ్రమైన IP అడగండి.

ఇది 10/10 అని చూపించే వరకు Gmail లేదా Outlook కు నిజమైన మెయిల్ పంపవద్దు. తక్కువ స్కోరు ప్లస్ కొత్త IP అనేది మొదటి రోజే మీ డొమైన్ ఫ్లాగ్ చేయబడటానికి కారణమవుతుంది.

దశ 8 — నిజమైన మెయిల్ క్లయింట్‌ను అనుసంధించండి

Thunderbird, Apple Mail లేదా మీ ఫోన్‌ను ఈ సెట్టింగులతో సర్వర్‌కు అనుసంధించండి. అన్నింటికీ సర్వర్ హోస్ట్ mail.example.com:

  • IMAP: పోర్ట్ 993, SSL/TLS (లేదా STARTTLS తో 143)
  • SMTP సబ్‌మిషన్: పోర్ట్ 465, SSL/TLS (లేదా STARTTLS తో 587)
  • వినియోగదారు పేరు: పూర్తి చిరునామా, you@example.com
  • పాస్‌వర్డ్: మీరు అమర్చిన మెయిల్‌బాక్స్ పాస్‌వర్డ్

క్లయింట్ మెయిల్‌ను పోర్ట్ 25 ద్వారా ఎప్పుడూ పంపవద్దు — ఆ పోర్ట్ సర్వర్-నుండి-సర్వర్‌కు మాత్రమే, mailcow అక్కడ ప్రామాణీకరించబడిన సబ్‌మిషన్‌ను అందించదు, దానివైపు చూపబడిన క్లయింట్‌ను తిరస్కరిస్తుంది. ఒక క్లయింట్ Relay access denied ను నివేదిస్తే, అది 25 పైన లేదా ప్రామాణీకరణ లేకుండా పంపడానికి ప్రయత్నిస్తోంది; దాన్ని మీ మెయిల్‌బాక్స్ ఆధారాలతో 465 లేదా 587 కు మార్చండి.

దశ 9 — నిజంగా ముఖ్యమైనది దానిని బ్యాకప్ చేయండి

mailcow ఒక బ్యాకప్ స్క్రిప్ట్‌ను అందిస్తుంది. ఇది ప్రతి stateful volume యొక్క స్నాప్‌షాట్‌ను తీస్తుంది. దీన్ని ఒక బాహ్య డిస్క్‌కు లేదా మౌంట్ చేసిన రిమోట్‌కు అమలు చేయండి:

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

all ఆరు అంశాలను సంగ్రహిస్తుంది. వాటిలో దేనినైనా కోల్పోతే డేటా పోతుంది: vmail (వాస్తవ మెయిల్‌బాక్స్‌లు), crypt (vmail ను డీక్రిప్ట్ చేసే కీలు — వీటి లేకుండా అవి పనికిరావు), mysql (డొమైన్‌లు, వినియోగదారులు, ఎలియాస్‌లు మరియు సెట్టింగ్‌లను కలిగి ఉన్న MariaDB), redis (క్యూ మరియు క్యాచ్ స్టేట్), rspamd (నేర్చుకున్న స్పామ్/హామ్), మరియు postfix (మెయిల్ క్యూ). ఇది ఒక సహాయక కంటైనర్ లోపల అమలవుతూ కంప్రెస్డ్ ఆర్కైవ్‌లను వ్రాస్తుంది. కాబట్టి స్టాక్ నడుస్తున్నప్పటికీ బ్యాకప్‌లు స్థిరంగా ఉంటాయి. దీన్ని ప్రతిరోజూ రాత్రి నడిచే cron జాబ్‌తో స్వయంచాలకం చేయండి. పాత సెట్‌లను తొలగించడానికి --delete-days 14 ను జోడించండి. పునరుద్ధరణ అనేది అదే స్క్రిప్ట్‌తో restore తో జరుగుతుంది. ఇది స్నాప్‌షాట్‌లను జాబితా చేస్తుంది మరియు మీరు తిరిగి తీసుకోవాల్సింది ఏది అని ఎంచుకోనిస్తుంది. మీరు ఎప్పుడూ పరీక్షించి పునరుద్ధరించని బ్యాకప్ అనేది ఒక ఆశ మాత్రమే, బ్యాకప్ కాదు — ఒక స్క్రాచ్ VPS పై ఒక డ్రై రన్ చేయండి.

దశ 10 — షెడ్యూల్ ప్రకారం నవీకరించండి

mailcow దాని స్వంత స్క్రిప్ట్ ద్వారా నవీకరిస్తుంది. ఈ స్క్రిప్ట్ కొత్త కోడ్‌ను లాగుతుంది, mailcow.conf మైగ్రేట్ చేస్తుంది, ఇమేజ్‌లను ముందుగా పొందుతుంది, మరియు కంటైనర్‌లను క్రమంలో రీస్టార్ట్ చేస్తుంది:

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

ముందుగా బ్యాకప్ తీసుకోండి (దశ 9). స్కీమా మైగ్రేషన్‌ను రివర్స్ చేయడం కష్టం. నవీకరణలు తరచుగా వస్తాయి. అవి ఇంటర్నెట్‌కి అనుసంధానించబడిన డెమోన్‌ల కోసం భద్రతా పరిష్కారాలను కలిగి ఉంటాయి. కాబట్టి మెయిల్ సర్వర్‌ను నెలల తరబడి నవీకరించకుండా వదిలివేయవద్దు. ఒక నవీకరణ ఏదైనా కంటైనర్‌ను అనారోగ్యంగా చేస్తే, sudo docker compose logs --tail=50 <service>-mailcow తిరిగి ప్రారంభం కాని డెమోన్ పేరును చూపిస్తుంది.

హార్డెనింగ్ గురించి ఒక గమనిక

mailcow దాని స్వంత netfilter సర్వీస్ (netfilter-mailcow) ను నడుపుతుంది. ఈ సర్వీస్ మెయిల్ మరియు webmail పోర్టులను తదేకంగా దెబ్బతీసే IPలను నిరోధిస్తుంది. కాబట్టి మెయిల్ వైపు డిఫాల్ట్‌గా రక్షించబడుతుంది. అయితే, హోస్ట్‌లోని SSH దీని పరిధిలో లేదు. SSH ఇప్పటికీ బహిరంగంగానే ఉంటుంది మరియు దానిపై బ్రూట్-ఫోర్స్ దాడులు కొనసాగుతూనే ఉంటాయి. కాబట్టి ఈ బిల్డ్‌ను SSH ఆథెంటికేషన్ లాగ్‌ను పర్యవేక్షించే Fail2ban మరియు కీ-ఆధారిత లాగిన్‌తో జతపరచండి. mailcow అడ్మిన్ UIను బలమైన పాస్‌వర్డ్ వెనుక ఉంచండి. అంతేకాకుండా, దాన్ని పబ్లిక్ ఇంటర్నెట్ నుండి దూరంగా లేదా VPN వెనుక ఉంచడం మంచిది.

వైఫల్య రకాలు, సరైన స్ట్రింగ్‌లతో

మెయిల్ క్యూలో ఉండిపోయి ఎప్పటికీ పంపబడదు. sudo docker compose exec postfix-mailcow postqueue -p నడపండి, లేదా అడ్మిన్ UI మెయిల్ క్యూను చూడండి; ఎంట్రీలు వాయిదా వేయబడి ఈ క్రింది విధంగా ఉంటాయి:

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

అంటే మీ ప్రొవైడర్ ద్వారా అవుట్‌బౌండ్ పోర్ట్ 25 బ్లాక్ చేయబడింది (దశ 1). ఏ కాన్ఫిగ్ దీన్ని పరిష్కరించదు — ఒక టికెట్ తెరవండి. ఇది DNS కాదు, TLS కూడా కాదు; సూచన పోర్ట్ 25 పై రిమోట్ MX ప్రక్కన timed out అనే పదం ఉండటమే.

Gmail ప్రతిదీ స్పామ్‌గా గుర్తిస్తుంది, లేదా బౌన్స్ చేస్తుంది. Gmailలో సందేశాన్ని తెరిచి, "Show original" ఎంచుకుని, ఆథెంటికేషన్ ఫలితాలను చదవండి. dkim=fail లేదా dkim=none అంటే మీ dkim._domainkey TXT లేదు, పాడైంది, లేదా ఇంకా ప్రచారం కాలేదు — ARC/DKIM పేజీ చూపించే దాన్ని ఖచ్చితంగా తిరిగి ప్రచురించి TTL కోసం వేచి ఉండండి. spf=fail అంటే SPF/MX రికార్డులు మీ IPని కవర్ చేయడం లేదు. అలైన్‌మెంట్ అన్నీ అన్నీ; ఒక్క చెక్ విఫలమైనా స్పామ్‌లో పడటానికి చాలు.

కనెక్ట్ అయినప్పుడు పెద్ద ప్రొవైడర్లు తిరస్కరిస్తాయి. బౌన్స్‌లు లేదా Postfix లాగ్‌ల్లో Gmail PTR తిరస్కారం ఉంటుంది:

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 కోడ్ అంటే రివర్స్ DNS లేదు లేదా అసమానత ఉంది. మీ IP కోసం PTRను ప్రొవైడర్ వద్ద mail.example.comకి సెట్ చేయండి (దశ 2). ఫార్వర్డ్ (A), రివర్స్ (PTR) రెండూ సరిపోవాలి, రెండూ mailcow ఇతర సర్వర్‌లకు గ్రీటింగ్ ఇచ్చే అదే హోస్ట్ పేరును కలిగి ఉండాలి.

బ్రౌజర్ ఎప్పటికీ తొలగని సర్టిఫికేట్ హెచ్చరికను చూపిస్తుంది. acme-mailcow కంటైనర్ నిజమైన సర్టిఫికేట్ పొందడంలో విఫలమైంది. దాని లాగ్ తనిఖీ చేయండి:

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

Cannot validate any hostnames, skipping Let's Encrypt for 1 hour. వంటి లైన్ లేదా ఛాలెంజ్ వైఫల్యం అంటే పోర్ట్ 80 ఇంటర్నెట్ నుండి చేరుకోలేదు, లేదా A రికార్డు ఈ సర్వర్‌ను సూచించడం లేదు. mail.example.com ఈ బాక్స్‌కు రిజాల్వ్ అవుతుందని నిర్ధారించుకోండి, ఏ హోస్ట్ ఫైర్‌వాల్ ద్వారా అయినా 80, 443 పోర్టులను తెరవండి, మరియు వాటికి మరేదీ బైండ్ కాకుండా చూసుకోండి. కారణాన్ని పరిష్కరించిన తర్వాత, గంట నిడివి బ్యాక్-ఆఫ్ కోసం వేచి ఉండకుండా క్లయింట్‌ను sudo docker compose restart acme-mailcowతో రీస్టార్ట్ చేయండి.

FAQ

స్వీయ-హోస్టింగ్ ఇమెయిల్ నిజంగా విలువైనదేనా?

మీకు డేటా యాజమాన్యం, అపరిమిత మారుపేర్లు మరియు పూర్తి నియంత్రణ కావాలంటే, అవును — mailcow ఒక VPS ధరకే వృత్తిపరమైన స్టాక్‌ను అందిస్తుంది. కానీ డెలివరబిలిటీ ఒక నిరంతర పని: IP కీర్తి, DNS సమలైన్‌మెంట్, మరియు బ్లాక్‌లిస్ట్ పర్యవేక్షణ ఎప్పటికీ పూర్తి కావు. ఒక రోజు స్పామ్ ఫోల్డర్‌లో చిక్కడం మీకు నష్టం కలిగించే కీలకమైన వ్యాపార చిరునామా కోసం, నిర్వహించబడే ప్రొవైడర్ ఒక ఆచరణాత్మక ఎంపిక. మీరు సౌకర్యం కంటే నియంత్రణకు విలువనిస్తూ, దానిని నిజంగా చూసుకుంటే స్వీయ-హోస్టింగ్ చేయండి.

అవుట్‌బౌండ్ పోర్ట్ 25 బ్లాక్ చేయబడిందో కాదో నేను ఎలా తెలుసుకుంటాను?

సర్వర్ నుండి nc -vz -w 5 gmail-smtp-in.l.google.com 25 నడపండి. "succeeded!" అంటే అది ఓపెన్‌లో ఉందని అర్థం; పాజ్ తర్వాత timed out వస్తే మీ ప్రొవైడర్ దానిని బ్లాక్ చేస్తుందని అర్థం. స్వీయ-హోస్టెడ్ సర్వర్ మెయిల్ స్వీకరించగలదు కానీ పంపలేకపోవడానికి ఇది అత్యంత సాధారణ కారణం, మరియు ఏకైక పరిష్కారం మీ ప్రొవైడర్ పోర్ట్‌ను తెరవడం — ఏ లోకల్ సెట్టింగ్ దీనిని మార్చదు.

నా మెయిల్ ఇంకా Gmail స్పామ్ ఫోల్డర్‌లోనే ఎందుకు పడుతోంది?

దాదాపు ఎల్లప్పుడూ ఇది పాడైన ప్రామాణీకరణ చైన్ వల్ల. Gmailలో "Show original" ఉపయోగించి spf=pass, dkim=pass, మరియు dmarc=pass కోసం చూడండి. dkim=fail అనేది లేని లేదా పాడైన dkim._domainkey TXT రికార్డ్‌ను సూచిస్తుంది; PTR అసమానత లేదా పంపే చరిత్ర లేని కొత్త IP కూడా హాని చేస్తుంది. ముందుగా mail-tester.com స్కోరును 10/10 కి తీసుకురండి, తర్వాత IPని నెమ్మదిగా వేడెక్కించండి — రోజుకు కొన్ని సందేశాలు పంపి క్రమంగా పెంచడం — మొదటి రోజే పెద్ద మొత్తంలో పంపకూడదు.

నేను ఖచ్చితంగా ఏమి బ్యాకప్ చేయాలి?

backup_and_restore.sh backup all నడపండి మరియు మొత్తం సెట్‌ను సర్వర్ నుండి దూరంగా ఉంచండి. ఇది vmail (మెయిల్‌బాక్స్‌లు), crypt (వాటిని డీక్రిప్ట్ చేసే కీలు), MariaDB డేటాబేస్ (డొమైన్‌లు, యూజర్‌లు, మారుపేర్లు, సెట్టింగ్‌లు), Redis, Rspamd నేర్చుకున్న డేటా, మరియు Postfix క్యూను క్యాప్చర్ చేస్తుంది. crypt వాల్యూమ్‌ను ప్రజలు విస్మరిస్తారు — దానంతట అది లేకుండా vmail బ్యాకప్ చదవలేని సైఫర్‌టెక్స్ట్‌గా మిగులుతుంది. ఒక స్క్రాచ్ బాక్స్‌పై రిస్టోర్‌ను కనీసం ఒకసారి పరీక్షించండి.

నేను mailcow ను 2 GB VPSపై నడపగలనా?

సౌకర్యంగా కాదు. generate_config.sh దాదాపు 2.5 GiB కంటే తక్కువ వద్ద ClamAV ను డిసేబుల్ చేయడానికి ఆఫర్ చేస్తుంది, మరియు అయినప్పటికీ Rspamd, ClamAV, Dovecot మరియు MariaDB మెమరీ కోసం పోటీపడతాయి, కాబట్టి ఏ వాస్తవ లోడ్‌లోనైనా మీరు స్వాప్ మరియు OOM కిల్స్‌ను ఎదుర్కోండి. స్థిరమైన సింగిల్-యూజర్ ఇన్‌స్టాల్‌కు 6 GiB మరియు 1 GiB స్వాప్‌ను కనీస అవసరంగా పరిగణించండి, మరియు ఒకటి రెండు మంది కంటే ఎక్కువ మంది దానిపై ఆధారపడిన వెంటనే 8 GiB కి మారండి.

#mailcow#email#self-hosting#docker#dns