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

Gmail అంగీకరించే mailcow VPS setup

mailcow install చేసే ముందు outbound port 25ను పరీక్షించండి. block ఉంటే మెయిల్ queueలోనే ఉంటుంది. తర్వాత Gmail 550 5.7.25 PTR rejection ఆపే DNS recordను సెట్ చేయండి.

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

మీ స్వంతంగా నిర్వహించే సర్వర్‌పై పూర్తి mail server: మెయిల్ పంపడానికి, స్వీకరించడానికి SMTP; మీ phone మరియు laptop సమకాలీకరణలో ఉండేందుకు IMAP; webmail client; అలాగే రెండు దిశల్లో వచ్చే ప్రతి సందేశానికి score కేటాయించే spam filter. mailcow-dockerized, Postfix, Dovecot, Rspamd, SOGo webmail, MariaDB, Redis మరియు ACME client ను ఒకే Docker Compose stack లో కలిపి అందిస్తుంది. అందువల్ల software ఏర్పాటు చేయడం కష్టమైన భాగం కాదు. ఇది అరగంటలో నడుస్తుంది.

దాని చుట్టూ ఉన్న అంశాలే కష్టమైనవి. కొత్త server ను internet లోని మిగతా వ్యవస్థలు email విషయంలో సహజంగానే నమ్మవు. "ఇది పనిచేస్తోంది" అనే స్థితి నుంచి "Gmail ప్రతి సందేశాన్ని ఎలాంటి సూచన లేకుండా తొలగిస్తోంది" అనే స్థితికి మధ్య తేడా నాలుగు DNS records మరియు మీరు పూర్తిగా నియంత్రించలేని ఒక IP-reputation setting పై ఆధారపడి ఉంటుంది. ఏదైనా rent చేసేముందు కింది prerequisites చదవండి. అవి చదివిన తర్వాత reputation మెరుగుపరచడానికి పడే శ్రమ విలువైనది కాదని నిర్ణయిస్తే, అది కూడా సమంజసమైన నిర్ణయమే. 2026లో నిజంగా self-hosting చేయడం విలువైనదేమిటో మా సంక్షిప్త వివరణ ఈ కారణాల వల్ల email ను "మీ ఉద్దేశం స్పష్టంగా ఉంటే మాత్రమే" అనే విభాగంలో ఉంచుతుంది.

అవసరాలే ప్రాజెక్ట్

వీటిలో ఏ ఒక్కదానినైనా మిస్ చేస్తే, ఎప్పటికీ చేరని mail ను పంపుతారు. సాధారణంగా ఇవే ఎక్కువగా సమస్యలకు కారణమయ్యే క్రమంలో:

బయటికి వెళ్లే port 25 తప్పనిసరిగా open గా ఉండాలి. మీ server TCP port 25 ద్వారా Gmail మరియు Microsoft కు mail పంపుతుంది. Spam ను అరికట్టడానికి చాలా VPS మరియు cloud providers బయటికి వెళ్లే port 25 ను default గా block చేస్తాయి. ఈ block నిశ్శబ్దంగా ఉంటుంది. Boot సమయంలో ఎటువంటి error కనిపించదు, అన్నీ సక్రమంగా ఉన్నట్లు కనిపిస్తాయి, కానీ mail queue లోనే శాశ్వతంగా ఉంటుంది. ఏదైనా install చేయడానికి ముందే దీన్ని test చేయండి. ఇది blocked గా ఉంటే, మీ provider ను దాన్ని open చేయమని support ticket పంపడమే ఏకైక పరిష్కారం. కొందరు పాత accounts కోసం దీన్ని open చేస్తారు; కొందరు ఎప్పటికీ చేయరు.

ఉపయోగించదగిన reputation కలిగిన clean IP ఉండాలి. Recycled VPS IPs పై మునుపటి tenant పంపిన spam కారణంగా blocklists లో ఇప్పటికే ఉండే అవకాశం ఉంది. ప్రారంభించడానికి ముందు Spamhaus lookup లేదా mxtoolbox వంటి service తో మీ IP ను check చేయండి. Listed IP ఉంటే, code ద్వారా పరిష్కరించలేని rejections ఎదురవుతాయి.

DNS పై నియంత్రణతో పాటు సరైన PTR record ఉండాలి. మీ domain యొక్క zone కు records జోడించాలి. అలాగే server IP కోసం reverse DNS (PTR) record ఉండాలి. అది మీ mail hostname కు తిరిగి point చేయాలి. PTR సాధారణంగా మీ DNS panel లో set చేయలేరు. IP ను కలిగి ఉన్న provider వద్దనే అది ఉంటుంది. కాబట్టి దాన్ని మీ VPS provider యొక్క control panel లో set చేయాలి లేదా ticket ద్వారా కోరాలి.

6 GiB RAM మరియు 2 vCPU సౌకర్యవంతమైన కనిష్ఠ వనరులు. Private install కోసం mailcow నిర్దేశించిన కనిష్ఠం 6 GiB RAM మరియు 1 GiB swap. కొంతమంది users దానిపై ఆధారపడటం ప్రారంభించిన తర్వాత 8 GiB RAM ను సూచిస్తుంది. సుమారు 2.5 GiB కంటే తక్కువ ఉంటే, kernel containers ను terminate చేయడం ప్రారంభించకుండా ఉండేందుకు 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 గా ఉపయోగించబడుతుంది. ప్రతిచోటా అదే పేరును consistent గా ఉంచండి.

దశ 1, బయటికి వెళ్లే 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!

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

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

ఆ timeoutనే నిరోధం సూచిస్తుంది. ఇది మీ 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, అంటే ఇతర serverలు మీ serverకు చేరుకోవడం, వేరే మార్గం. అది సాధారణంగా తెరిచి ఉంటుంది. Providers throttle చేసేది outbound వైపు.

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

DNS మార్పులు propagate కావడానికి సమయం పడుతుంది. అందువల్ల 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 రికార్డు “ఈ domain తరఫున పంపేది నా MX మాత్రమే; మిగతావన్నీ reject చేయాలి” అని సూచిస్తుంది. మీ స్వంత mail ను bounce చేయకుండా reports ను monitor చేయడానికి DMARC ను p=none వద్ద ప్రారంభించండి. Alignment నిర్ధారించబడిన తర్వాత దాన్ని p=quarantineకు, తరువాత p=rejectకు కఠినతరం చేయండి. రెండు రికార్డులను ఉద్దేశపూర్వకంగా ఇంకా చేర్చలేదు: DKIM, దీనిని mailcow దశ 6లో మీ కోసం generate చేస్తుంది; మరియు PTR, దీనిని ఇప్పుడు మీ provider panel లో సెట్ చేయాలి.

10.0.0.10 కోసం PTR (reverse DNS) ను mail.example.comకు సెట్ చేయండి. ఖచ్చితమైన విలువ MAILCOW_HOSTNAME. చాలామంది మర్చిపోయే ఏకైక రికార్డు ఇదే. పెద్ద providers దీనిని పరిశీలించి mail ను reject చేస్తాయి. మీ panel లో rDNS field లేకపోతే ticket raise చేయండి.

దశ 3, Docker ఇన్‌స్టాల్ చేయడం

mailcow కు Compose v2 plugin తో కూడిన Docker Engine అవసరం. Ubuntu యొక్క docker.io package ను ఉపయోగించకుండా Docker అధికారిక convenience script ను ఉపయోగించండి. ఆ package లో Compose plugin ఉండదు:

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

మీకు Docker Compose version v2.x line కనిపించాలి. 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 చేసి configuration రూపొందించడం

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

ముందుగా umask ను తనిఖీ చేయండి. 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 documentation పేర్కొనే memory ఎక్కువగా వినియోగించే రెండవ అంశం full-text search. దీన్ని దాటవేస్తే webmail లో body-text search మాత్రమే అందుబాటులో ఉండదు.

Host లో ఇప్పటికే మరొక సేవ వాటిని ఉపయోగిస్తే తప్ప HTTP_PORT=80 మరియు HTTPS_PORT=443 ను మార్చకుండా ఉంచండి. Certificate పొందడానికి mailcow లోని built-in ACME client కు internet నుంచి port 80 అందుబాటులో ఉండాలి. అందుకే అదే server లో ప్రత్యేక nginx-plus-Certbot అమరికను నడపకండి. mailcow తన TLS ను అంతర్గతంగా issue చేసి renew చేస్తుంది. Port 80/443 పై రెండవ సేవ వినడం వల్ల అది విఫలమవుతుంది. Public web front end కోరుకునే ఇతర సేవలకు కూడా ఇదే వర్తిస్తుంది. అందువల్ల Jellyfin library ను 90s video storeలా మార్చే Halcyon అమరిక వంటి build, 443 పై తన reverse proxy ను ఆశించేది, వేరే host లో ఉండాలి. Public web port అవసరం లేని సేవ దీనికి మినహాయింపు. self-hosted RustDesk relay తన సొంత 21115 నుంచి 21119 పరిధిలో మాత్రమే listen చేస్తుంది. కాబట్టి మీ వద్ద తగినంత bandwidth headroom ఉంటే అదే server తో దాన్ని share చేయవచ్చు.

దశ 5, stack ను ప్రారంభించి login చేయండి

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ను తెరవండి. Default admin login లో username admin, password moohoo ఉంటాయి. Access → Administrators కింద ఉన్న admin UIలో ఆ password ను వెంటనే మార్చండి. Browser NET::ERR_CERT_AUTHORITY_INVALID అని హెచ్చరిస్తే, ACME certificate ఇంకా issue కాలేదని అర్థం. ఇది విఫలమైందని భావించే ముందు దిగువన ఉన్న ACME failure విభాగాన్ని చూడండి; మొదటి ఒకటి లేదా రెండు నిమిషాలకు self-signed placeholder కనిపించడం సాధారణమే.

దశ 6, ఒక domain, mailbox జోడించి DKIM ను publish చేయండి

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

ఇప్పుడు DKIM keyని సృష్టించండి. Configuration → ARC/DKIM keys కు వెళ్లండి. మీరు domainను జోడించినప్పుడు mailcow ఇప్పటికే keyని సృష్టించి ఉండవచ్చు. అలా జరగకపోతే అక్కడే generate చేయండి. Domainను ఎంచుకుని, selectorగా dkim ను అలాగే ఉంచండి, 2048-bit ఎంచుకుని Add పై click చేయండి. అక్కడ చూపించే పొడవైన TXT విలువను copy చేసి, దాన్ని ఇలా publish చేయండి:

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

mailcowలోని Domains పేజీలో DNS button ఉంటుంది. మీరు publish చేయాల్సిన ప్రతి recordను అది చూపిస్తుంది. ప్రస్తుతం publish చేసిన విలువకు సరిపోతే green tick, సరిపోకపోతే red cross చూపిస్తుంది. దీన్ని checklistగా ఉపయోగించండి. Deliverabilityని పరీక్షించే ముందు ప్రతి row greenగా ఉండేలా చూసుకోండి. Publish చేసిన తరువాత DKIM row redగా ఉంటే, సాధారణంగా keyని TXT chunksగా తప్పుగా విభజించినట్లు అర్థం. ఒకే TXT stringకు 255-character limit ఉంటుంది; 2048-bit key ఆ పరిమితికంటే పొడవుగా ఉంటుంది. కాబట్టి దాన్ని ఒకే logical valueగా paste చేయండి. మీ DNS host దాన్ని అవసరమైన chunksగా స్వయంచాలకంగా విభజించనివ్వండి.

దశ 7, డెలివరబిలిటీని పరీక్షించి 10/10 సాధించండి

mail-tester.com కు వెళ్లి, అది చూపించే యాదృచ్ఛిక address ను copy చేయండి. మీ కొత్త mailbox నుంచి దానికి ఒక message పంపండి. https://mail.example.com/SOGo వద్ద SOGo webmail లోకి login చేసి, అక్కడి నుంచీ కూడా message పంపండి. తరువాత "Then check your score" పై click చేయండి.

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

  • SPF not aligned, మీ MX/SPF record లేదు లేదా sending IP అందులో చేర్చబడలేదు. SPF TXT ను మళ్లీ పరిశీలించండి.
  • DKIM signature does not verify, dkim._domainkey TXT లేదు, ఇంకా propagate కాలేదు లేదా దెబ్బతింది. ఇది అత్యంత సాధారణంగా జరిగే పొరపాటు.
  • No PTR / PTR mismatch, reverse DNS mail.example.com కు resolve కావడం లేదు. దీన్ని provider వద్ద సరిచేయండి.
  • Listed on a blocklist, మీ IP యొక్క గత reputation కారణం. Delisting కోసం అభ్యర్థించండి లేదా మెరుగైన reputation ఉన్న IP ను అడగండి.

ఇది 10/10 అని చూపించే వరకు Gmail లేదా Outlook కు నిజమైన mail పంపవద్దు. తక్కువ score తో పాటు కొత్త IP ఉంటే, మొదటి రోజే మీ domain flag చేయబడే అవకాశం ఉంటుంది.

నిజమైన mail client ను కనెక్ట్ చేయండి

ఈ settings తో Thunderbird, Apple Mail లేదా మీ phone ను server కు point చేయండి. వీటన్నింటికీ 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: మీరు set చేసిన mailbox password

Client mail ను ఎప్పుడూ port 25 ద్వారా పంపవద్దు. ఆ port server-to-server mail కోసం మాత్రమే. mailcow అక్కడ authenticated submission అందించదు. దానికి point చేసిన client ను reject చేస్తుంది. Client Relay access denied అని చూపిస్తే, అది port 25 ద్వారా లేదా authentication లేకుండా mail పంపడానికి ప్రయత్నిస్తోంది. Mailbox credentials తో దాన్ని 465 లేదా 587 కు, STARTTLS తో configure చేయండి.

నిజంగా అవసరమైన డేటాను మాత్రమే బ్యాకప్ చేయండి

mailcow stateful volumes లోని మొత్తం డేటా స్థితిని snapshot చేసే backup script ను అందిస్తుంది. దీన్ని external disk లేదా mounted remote కు అమలు చేయండి:

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

all ఆరు అంశాలను capture చేస్తుంది. వీటిలో ఏదైనా కోల్పోతే డేటా కోల్పోతారు: vmail (నిజమైన mailboxes), crypt (vmail ను decrypt చేసే keys; ఇది లేకుండా అవి పనికిరావు), mysql (domains, users, aliases మరియు settings ను నిల్వ చేసే MariaDB), redis (queue మరియు cache స్థితి), rspamd (నేర్చుకున్న spam/ham సమాచారం), మరియు postfix (mail queue). ఈ script helper container లో నడిచి compressed archives ను రాస్తుంది. అందువల్ల stack అమలులో ఉన్నప్పటికీ backups consistent గా ఉంటాయి. దీన్ని nightly cron job తో ఆటోమేట్ చేయండి. పాత sets ను తొలగించడానికి --delete-days 14 కూడా జోడించండి. పనిచేయడం ఆపిన cron job సాధారణంగా ఎలాంటి హెచ్చరిక లేకుండా విఫలమవుతుంది. కాబట్టి script యొక్క exit status ను మీరు నిజంగా గమనించే ప్రదేశానికి పంపండి. self-hosted ntfy server అదే cron entry నుంచి ఒక-line curl ను స్వీకరించి, వైఫల్యం జరిగిన రాత్రే మీ phone కు తెలియజేస్తుంది. Restore కోసం restore తో అదే script ను ఉపయోగించండి. ఇది snapshots ను జాబితా చేసి, తిరిగి తీసుకురావాల్సిన వాటిని ఎంచుకునే అవకాశం ఇస్తుంది. ఎప్పుడూ test-restore చేయని backup ఒక ఆశ మాత్రమే, backup కాదు. కాబట్టి scratch VPS లో ఒక dry run చేయండి.

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

mailcow తన స్వంత script ద్వారా updates చేస్తుంది. ఈ script కొత్త code ను pull చేసి, mailcow.conf ను migrate చేసి, images ను ముందుగానే fetch చేసి, 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 గా మారితే, మళ్లీ ప్రారంభం కాని daemon పేరును sudo docker compose logs --tail=50 <service>-mailcow చూపిస్తుంది.

కఠిన భద్రతపై గమనిక

mailcow తన స్వంత netfilter సేవ (netfilter-mailcow) ను నడుపుతుంది. ఇది mail మరియు webmail ports పై పదేపదే దాడి చేసే IPలను ban చేస్తుంది. అందువల్ల mail భాగానికి ప్రారంభం నుంచే రక్షణ ఉంటుంది. అయితే host పై ఉన్న SSH దీనిలోకి రాదు. SSH బాహ్యంగా అందుబాటులోనే ఉంటుంది మరియు brute-force దాడులకు గురవుతూనే ఉంటుంది. ఈ build తో పాటు SSH auth log ను Fail2ban ద్వారా monitor చేయడం మరియు key-only login ఉపయోగించండి. mailcow admin UI కు బలమైన password ఉంచండి. సాధ్యమైనంతవరకు దాన్ని public internet నుంచి దూరంగా ఉంచండి లేదా VPN వెనుక ఉంచండి.

విఫలత పరిస్థితులు, ఖచ్చితమైన strings తో

Mail queues లో నిలిచిపోతుంది, ఎప్పటికీ delivery కాదు. 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 ను block చేసింది (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 చూపిస్తున్నదానినే ఖచ్చితంగా మళ్లీ publish చేసి, TTL కోసం వేచి ఉండండి. spf=fail అంటే SPF/MX records మీ IP ను cover చేయడం లేదు. Alignment చాలా ముఖ్యం; ఒక్క check విఫలమైనా message spam లోకి వెళ్లవచ్చు.

Connect సమయంలో పెద్ద providers reject చేస్తున్నాయి. 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 కనిపిస్తే, internet నుంచి port 80 చేరుకోలేకపోతున్నారని లేదా A record ఈ server వైపు చూపడం లేదని అర్థం. mail.example.com ఈ box కు resolve అవుతుందో నిర్ధారించండి. ఏ host firewall ఉన్నా దాని ద్వారా ports 80 మరియు 443 ను తెరవండి. మరే ఇతర service ఆ ports పై bind కాలేదని నిర్ధారించండి. కారణాన్ని పరిష్కరించిన తర్వాత, గంటపాటు ఉండే back-off ముగిసే వరకు వేచి ఉండకుండా sudo docker compose restart acme-mailcow తో client ను restart చేయండి.

FAQ

స్వయంగా email hosting నిర్వహించడం నిజంగా విలువైనదేనా?

డేటాపై యాజమాన్యం, అపరిమిత aliases, పూర్తి నియంత్రణ కావాలంటే అవును. VPS ధరకు mailcow వృత్తిపరమైన stack ను అందిస్తుంది. అయితే deliverability నిర్వహణ నిరంతరం చేయాల్సిన పని: IP reputation, DNS alignment, blocklist monitoring పూర్తిగా ముగిసే పని కాదు. ఒకరి spam folder లో మీ సందేశం ఒక్క రోజు ఉండటం వల్లే వ్యాపారానికి గణనీయమైన నష్టం కలిగే mission-critical చిరునామా అయితే managed provider ను ఎంచుకోవడం ఆచరణాత్మక నిర్ణయం. సౌలభ్యం కంటే నియంత్రణకు ప్రాధాన్యం ఇచ్చి, వ్యవస్థను క్రమం తప్పకుండా నిర్వహించగలిగితే self-hosting చేయండి. మీ అసలు లక్ష్యం email ప్రత్యేకంగా కాకుండా, మీ డేటాను ఇతరుల servers నుంచి బయట ఉంచడమైతే, మరెవరూ నిర్ణయించలేని సేవతో ప్రారంభించండి: photo library కి deliverability సమస్య ఉండదు. అదే రకమైన VPS పై ఆ build కోసం అవసరమైన RAM పరిమితులు మరియు backup commands ను మా PhotoPrism మరియు Immich పోలిక వివరిస్తుంది.

outbound port 25 బ్లాక్ అయిందో లేదో ఎలా తెలుసుకోవాలి?

server నుంచి nc -vz -w 5 gmail-smtp-in.l.google.com 25 అమలు చేయండి. "succeeded!" కనిపిస్తే అది open గా ఉంది. pause తర్వాత timed out కనిపిస్తే మీ provider దాన్ని block చేస్తున్నాడు. self-hosted server mail ను స్వీకరించగలిగినా పంపలేకపోవడానికి ఇదే అత్యంత సాధారణ కారణం. provider port ను open చేయడం మాత్రమే పరిష్కారం. స్థానిక settings తో దీన్ని మార్చలేరు.

నా 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 అమలు చేసి, మొత్తం set ను server వెలుపల భద్రపరచండి. ఇందులో vmail (mailboxes), crypt (వాటిని decrypt చేసే keys), MariaDB database (domains, users, aliases, settings), Redis, Rspamd learned data, Postfix queue ఉంటాయి. చాలామంది నిర్లక్ష్యం చేసే భాగం crypt volume. అది లేకపోతే vmail backup చదవలేని ciphertext గా ఉంటుంది. కనీసం ఒక్కసారి scratch box పై restore ను పరీక్షించండి.

2 GB VPS పై mailcow నడపవచ్చా?

సౌకర్యవంతంగా నడపలేరు. సుమారు 2.5 GiB కంటే తక్కువ memory ఉన్నప్పుడు generate_config.sh ClamAV ను disable చేయమని సూచిస్తుంది. అయినప్పటికీ Rspamd, ClamAV, Dovecot, MariaDB memory కోసం పోటీ పడతాయి. అందువల్ల నిజమైన load కింద swap మరియు OOM kills ఎదురవుతాయి. స్థిరమైన single-user install కు 6 GiB memory మరియు 1 GiB swap ను కనీస పరిమితిగా పరిగణించండి. ఇద్దరు కంటే ఎక్కువ మంది దీనిపై ఆధారపడటం ప్రారంభించిన వెంటనే 8 GiB కు పెంచండి.