ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

กล่องจดหมายเต็ม วิธีลดขนาดและวางแผนโควตา
Home กล่องจดหมายเต็ม วิธีลดขนาดและวางแผนโควตา

กล่องจดหมายเต็ม วิธีลดขนาดและวางแผนโควตา

ข้อความว่ากล่องจดหมายเต็มมักมาพร้อมกับผลที่ร้ายแรงกว่าที่คิด เพราะเมื่อเต็มแล้วอีเมลใหม่จะถูกตีกลับ ผู้ส่งได้รับแจ้งว่าส่งไม่ถึง และอีเมลสำคัญจากลูกค้าอาจหายไปโดยที่เจ้าของกล่องไม่รู้เลย

คู่มือนี้แก้ปัญหาเฉพาะหน้าและวางระบบไม่ให้เกิดซ้ำ ทั้งการแจ้งเตือนล่วงหน้าและนโยบายจัดเก็บอีเมลเก่า

สิ่งที่ต้องเตรียม

  • สิทธิ์ผู้ดูแลระบบอีเมล หรือสิทธิ์เข้าเว็บเมลของบัญชีนั้น
  • เซิร์ฟเวอร์ที่ใช้ Dovecot สำหรับคำสั่งในคู่มือนี้

ขั้นตอนที่ 1: ดูว่าใครใกล้เต็มบ้าง

# ดูโควตาของบัญชีเดียว
sudo doveadm quota get -u [email protected]

# ดูทุกบัญชี เรียงจากที่ใช้มากที่สุด
sudo doveadm quota get -A 2>/dev/null \
  | awk 'NR>1 && $2=="STORAGE" {printf "%-34s %6s%%  %s/%s KB\n", $1, $5, $3, $4}' \
  | sort -k2 -rn | head -20

ดูขนาดจริงบนดิสก์

sudo du -sh /home/vmail/example.com/* 2>/dev/null | sort -h | tail -15

ขั้นตอนที่ 2: หาว่าอะไรกินพื้นที่

# ขนาดแยกตามโฟลเดอร์
sudo doveadm mailbox status -u [email protected] 'vsize' '*' \
  | sort -t= -k2 -rn | head -15

# จำนวนอีเมลแยกตามโฟลเดอร์
sudo doveadm mailbox status -u [email protected] 'messages' '*'

สิ่งที่มักพบเป็นอันดับต้น ๆ

  • โฟลเดอร์ Sent ที่มีอีเมลพร้อมไฟล์แนบสะสมหลายปี ซึ่งมักใหญ่กว่า Inbox
  • ถังขยะที่ไม่เคยถูกล้าง
  • โฟลเดอร์สแปมที่สะสมอัตโนมัติ
  • อีเมลไม่กี่ฉบับที่มีไฟล์แนบขนาดหลายสิบเมกะไบต์

ขั้นตอนที่ 3: หาอีเมลที่มีไฟล์แนบขนาดใหญ่

# อีเมลที่ใหญ่กว่า 10 MB
sudo doveadm search -u [email protected] LARGER 10485760

# แสดงรายละเอียดพร้อมขนาดและหัวข้อ
sudo doveadm fetch -u [email protected] 'hdr.subject hdr.date size.physical' \
  LARGER 10485760 2>/dev/null | head -60

การลบอีเมลขนาดใหญ่เพียงยี่สิบฉบับมักคืนพื้นที่ได้มากกว่าการลบอีเมลธรรมดาหลายพันฉบับ จึงควรเริ่มจากตรงนี้

ขั้นตอนที่ 4: ล้างอย่างปลอดภัย

ทำตามลำดับจากที่ปลอดภัยที่สุดไปหาที่ต้องระวัง

# 1. ล้างถังขยะที่เก่ากว่า 30 วัน
sudo doveadm expunge -u [email protected] mailbox Trash savedbefore 30d

# 2. ล้างสแปมที่เก่ากว่า 14 วัน
sudo doveadm expunge -u [email protected] mailbox Junk savedbefore 14d

# 3. ดูก่อนว่าจะลบอะไรใน Sent ที่เก่ามาก
sudo doveadm search -u [email protected] mailbox Sent savedbefore 2y LARGER 5242880 | wc -l

ตรวจจำนวนก่อนลบเสมอ และแจ้งเจ้าของบัญชีก่อนแตะโฟลเดอร์ที่ไม่ใช่ถังขยะและสแปม

# บีบอัดพื้นที่หลังลบ สำหรับ Maildir
sudo doveadm quota recalc -u [email protected]
sudo doveadm quota get -u [email protected]

คำสั่ง quota recalc จำเป็นเพราะตัวเลขโควตาถูกเก็บแยกและอาจไม่อัปเดตทันที

ขั้นตอนที่ 5: ย้ายอีเมลเก่าไปจัดเก็บแทนการลบ

วิธีที่ดีกว่าการลบคือย้ายไปโฟลเดอร์จัดเก็บที่ไม่นับโควตา หรือส่งออกเป็นไฟล์

# สร้างโฟลเดอร์จัดเก็บ
sudo doveadm mailbox create -u [email protected] Archive.2023

# ย้ายอีเมลเก่าเข้าไป
sudo doveadm move -u [email protected] Archive.2023 \
  mailbox INBOX savedbefore 2024-01-01

ส่งออกเป็นไฟล์เพื่อเก็บนอกเซิร์ฟเวอร์

# ส่งออกเป็นไฟล์ mbox
sudo doveadm fetch -u [email protected] text \
  mailbox INBOX savedbefore 2023-01-01 > /backup/user-2022.mbox

# หรือคัดลอกโฟลเดอร์ Maildir ทั้งโฟลเดอร์
sudo tar czf /backup/user-archive.tar.gz \
  -C /home/vmail/example.com/user/Maildir .Archive.2023

ผู้ใช้เปิดไฟล์ mbox ได้ด้วย Thunderbird ซึ่งเป็นวิธีที่สะดวกสำหรับการค้นหาอีเมลเก่านาน ๆ ครั้ง

ขั้นตอนที่ 6: ตั้งโควตาให้เหมาะสม

sudo nano /etc/dovecot/conf.d/90-quota.conf
plugin {
  quota = maildir:User quota
  quota_rule = *:storage=10G
  quota_rule2 = Trash:storage=+500M
  quota_rule3 = Junk:storage=+200M

  # แจ้งเตือนเมื่อใช้ถึงเกณฑ์
  quota_warning  = storage=80%% quota-warning 80 %u
  quota_warning2 = storage=90%% quota-warning 90 %u
  quota_warning3 = storage=95%% quota-warning 95 %u
}

service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  user = vmail
  unix_listener quota-warning {
    user = vmail
    group = vmail
    mode = 0660
  }
}

กฎที่เพิ่มโควตาให้ถังขยะและสแปมมีประโยชน์ เพราะทำให้อีเมลที่ถูกลบไม่กินโควตาหลักจนเต็ม

ขั้นตอนที่ 7: เขียนสคริปต์แจ้งเตือน

sudo nano /usr/local/bin/quota-warning.sh
#!/bin/sh
PERCENT=$1
USER=$2

cat <<EOF | /usr/lib/dovecot/dovecot-lda -d "$USER" -o "plugin/quota=maildir:User quota:noenforcing"
From: [email protected]
Subject: แจ้งเตือน พื้นที่กล่องจดหมายใช้ไปแล้ว ${PERCENT}%
Content-Type: text/plain; charset=UTF-8

เรียนผู้ใช้งาน

กล่องจดหมาย $USER ใช้พื้นที่ไปแล้ว ${PERCENT}% ของโควตาที่ได้รับ

เมื่อพื้นที่เต็ม อีเมลที่ส่งเข้ามาจะถูกตีกลับและคุณจะไม่ได้รับอีเมลใหม่

วิธีลดพื้นที่
1. ล้างถังขยะและโฟลเดอร์สแปม
2. ลบอีเมลที่มีไฟล์แนบขนาดใหญ่ที่ไม่ต้องการแล้ว
3. ย้ายอีเมลเก่าไปเก็บในโฟลเดอร์จัดเก็บ

หากต้องการเพิ่มพื้นที่ กรุณาติดต่อฝ่ายไอที

ระบบอีเมลอัตโนมัติ
EOF
sudo chmod +x /usr/local/bin/quota-warning.sh
sudo systemctl restart dovecot

ทดสอบว่าการแจ้งเตือนทำงาน โดยตั้งโควตาของบัญชีทดสอบให้ต่ำแล้วส่งอีเมลเข้าไปจนถึงเกณฑ์

ขั้นตอนที่ 8: วางแผนโควตาระดับองค์กร

แนวทางที่ใช้ได้จริงตามลักษณะงาน

  • พนักงานทั่วไป 5-10 GB เพียงพอสำหรับการใช้งานหลายปี
  • ฝ่ายขายและบริการลูกค้า 15-25 GB เพราะรับส่งไฟล์แนบมาก
  • บัญชีกลาง เช่น info หรือ support 20-50 GB เพราะมีปริมาณสูงและหลายคนใช้ร่วมกัน
  • ผู้บริหาร 25-50 GB และมักต้องการเก็บย้อนหลังนาน

สำรวจการใช้งานจริงก่อนตั้ง แทนการเดา

sudo doveadm quota get -A 2>/dev/null \
  | awk '$2=="STORAGE" {sum+=$3; n++; if($3>max) max=$3}
         END {printf "เฉลี่ย %.1f GB  สูงสุด %.1f GB  จาก %d บัญชี\n", sum/n/1048576, max/1048576, n}'

ตั้งโควตาประมาณสองถึงสามเท่าของค่าเฉลี่ย แล้วเฝ้าดูแนวโน้มการเติบโตทุกไตรมาส

ปัญหาที่พบบ่อย

ลบอีเมลแล้วพื้นที่ไม่ลด

อีเมลที่ลบยังอยู่ในถังขยะ ล้างถังขยะแล้วสั่ง doveadm quota recalc และตรวจว่าโปรแกรมของผู้ใช้ตั้งโฟลเดอร์ถังขยะชี้ไปที่เซิร์ฟเวอร์ ไม่ใช่โฟลเดอร์ในเครื่อง

ตัวเลขโควตาไม่ตรงกับขนาดจริง

sudo doveadm quota recalc -u [email protected]
sudo du -sh /home/vmail/example.com/user

ผู้ใช้ไม่ได้รับอีเมลแจ้งเตือน

ตรวจว่าสคริปต์มีสิทธิ์รันและ dovecot-lda ทำงานได้ ดู Log ที่ /var/log/maillog และตรวจว่าอีเมลแจ้งเตือนไม่ถูกส่งเข้าโฟลเดอร์สแปมเสียเอง

อีเมลถูกตีกลับทั้งที่ยังไม่เต็ม

อาจมีโควตาอีกชั้นที่ระดับโดเมนหรือระดับระบบไฟล์ ตรวจทั้งสองอย่าง

sudo repquota -a | head
sudo df -h /home/vmail

ต้องการระบบอีเมลองค์กรที่มีพื้นที่เพียงพอและมีทีมดูแล ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security