คำตอบสั้น ๆ: ออกแบบนโยบายว่าอีเมลต้องเก็บนานแค่ไหน เก็บที่ไหน และค้นหาย้อนหลังอย่างไร พร้อมวิธีทางเทคนิคที่ทำได้จริง
คู่มือนี้อธิบาย Email Archive ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
องค์กรจำนวนมากไม่มีนโยบายเรื่องอีเมลย้อนหลังที่ชัดเจน จนกระทั่งเกิดเหตุการณ์ที่ต้องใช้ เช่น ข้อพิพาททางธุรกิจที่ต้องยืนยันว่าเคยตกลงอะไรไว้ หรือพนักงานลาออกแล้วอีเมลของลูกค้าที่เขาดูแลหายไปทั้งหมด
คู่มือนี้แยกให้ชัดระหว่างสองเรื่องที่คนมักสับสน คือการสำรองข้อมูลกับการจัดเก็บ ซึ่งมีวัตถุประสงค์และวิธีทำต่างกันโดยสิ้นเชิง
ความต่างที่ต้องเข้าใจก่อน
การสำรองข้อมูล
มีไว้กู้คืนเมื่อระบบเสียหาย ตอบคำถามว่า "ทำอย่างไรให้ระบบกลับมาเหมือนเมื่อวาน" เก็บระยะสั้น เช่น 30 วัน และไม่ได้ออกแบบมาให้ค้นหารายฉบับ
การจัดเก็บ
มีไว้ค้นหาย้อนหลังและตอบข้อกำหนด ตอบคำถามว่า "อีเมลที่คุยกับลูกค้ารายนี้เมื่อสามปีก่อนว่าอย่างไร" เก็บระยะยาว เช่น 5-10 ปี และต้องค้นหาได้
ข้อมูลสำรองใช้แทนการจัดเก็บไม่ได้ เพราะเมื่อผู้ใช้ลบอีเมลแล้ว รอบสำรองถัดไปก็ไม่มีอีเมลนั้นอีก การจัดเก็บที่ถูกต้องต้องเก็บตั้งแต่ตอนที่อีเมลผ่านระบบ ก่อนที่ผู้ใช้จะมีโอกาสลบ
ขั้นตอนที่ 1: กำหนดนโยบายก่อนลงมือทางเทคนิค
ตอบคำถามเหล่านี้ร่วมกับฝ่ายกฎหมายและผู้บริหาร
- ต้องเก็บนานแค่ไหน แยกตามประเภทหรือไม่
- ใครมีสิทธิ์ค้นหาย้อนหลัง และต้องผ่านการอนุมัติจากใคร
- จะจัดการกับข้อมูลส่วนบุคคลใน อีเมลอย่างไรให้สอดคล้องกับ PDPA
- เมื่อพ้นระยะเวลาแล้วจะลบหรือเก็บต่อ
ข้อควรระวังด้าน PDPA การเก็บอีเมลไว้นานกว่าที่จำเป็นโดยไม่มีฐานทางกฎหมายรองรับเป็นความเสี่ยงในตัวมันเอง นโยบายที่ดีต้องระบุทั้งระยะเวลาเก็บและการลบเมื่อพ้นกำหนด
ระยะเวลาที่ใช้กันทั่วไปในองค์กรไทย
- อีเมลทั่วไป 3-5 ปี
- อีเมลที่เกี่ยวกับสัญญาและการเงิน 10 ปี ตามอายุความ
- อีเมลของฝ่ายบุคคล ตามกฎหมายแรงงานที่เกี่ยวข้อง
ปรึกษาที่ปรึกษากฎหมายขององค์กรเพื่อกำหนดตัวเลขที่เหมาะกับธุรกิจของคุณ
ขั้นตอนที่ 2: ตั้งการเก็บสำเนาทุกฉบับที่ผ่านระบบ
วิธีที่ถูกต้องคือทำสำเนาตั้งแต่ตอนที่อีเมลเข้าและออกจากเซิร์ฟเวอร์ ซึ่งเรียกว่า journaling
บน Postfix ตั้งด้วย always_bcc
sudo postconf -e 'always_bcc = [email protected]'
sudo systemctl reload postfix
sudo postconf always_bcc
อีเมลทุกฉบับทั้งขาเข้าและขาออกจะถูกสำเนาไปยังบัญชีนั้น
ข้อควรระวังสำคัญ บัญชีปลายทางต้องอยู่คนละโดเมนหรือตั้งค่าไม่ให้ always_bcc ทำงานซ้ำกับตัวเอง ไม่เช่นนั้นจะเกิดการวนซ้ำไม่รู้จบ
ต้องแจ้งพนักงานให้ทราบว่ามีการเก็บสำเนา ซึ่งเป็นทั้งข้อกำหนดทางกฎหมายและเรื่องความโปร่งใส
ขั้นตอนที่ 3: แยกที่เก็บออกจากระบบอีเมลหลัก
ที่เก็บถาวรควรอยู่คนละเซิร์ฟเวอร์และมีสิทธิ์เข้าถึงแยกต่างหาก เพื่อให้ผู้ดูแลระบบอีเมลทั่วไปแก้ไขข้อมูลย้อนหลังไม่ได้
#!/bin/bash
# ย้ายอีเมลจากบัญชีรวมไปเก็บแบบแยกตามเดือน
set -euo pipefail
[email protected]
DEST=/srv/mail-archive
MONTH=$(date -d 'last month' +%Y-%m)
mkdir -p "$DEST/$MONTH"
doveadm fetch -u "$SRC" text \
mailbox INBOX savedbefore "$(date -d 'last month' +%Y-%m-01)" \
> "$DEST/$MONTH/archive.mbox"
gzip -9 "$DEST/$MONTH/archive.mbox"
# ตั้งสิทธิ์อ่านอย่างเดียว
chmod 440 "$DEST/$MONTH/archive.mbox.gz"
chown root:archive "$DEST/$MONTH/archive.mbox.gz"
# ลบออกจากบัญชีรวมหลังย้ายแล้ว
doveadm expunge -u "$SRC" mailbox INBOX savedbefore "$(date -d 'last month' +%Y-%m-01)"
echo "จัดเก็บเดือน $MONTH เสร็จ ขนาด $(du -h "$DEST/$MONTH/archive.mbox.gz" | cut -f1)"
ส่งสำเนาออกไปเก็บนอกสถานที่ด้วย เพื่อให้รอดแม้ศูนย์ข้อมูลเสียหาย
restic backup /srv/mail-archive --tag mail-archive
ขั้นตอนที่ 4: ทำให้ค้นหาได้
ไฟล์ mbox ที่บีบอัดไว้ค้นหายาก สำหรับองค์กรที่ต้องค้นบ่อย ควรมีระบบดัชนี
ทางเลือกที่ทำได้จริง
- เก็บไว้ในบัญชี IMAP เฉพาะ แล้วใช้ความสามารถค้นหาของ Dovecot ซึ่งง่ายที่สุดและใช้ได้ทันที
- ใช้ระบบจัดเก็บอีเมลโดยเฉพาะ เช่น MailPiler ซึ่งมีหน้าจอค้นหาและควบคุมสิทธิ์ในตัว
- ส่งเข้า OpenSearch สำหรับองค์กรที่มีระบบค้นหาอยู่แล้ว
ค้นหาด้วย doveadm สำหรับกรณีที่เก็บไว้ในบัญชี IMAP
# ค้นหาตามผู้ส่ง
sudo doveadm search -u [email protected] FROM '[email protected]'
# ค้นหาตามคำในหัวข้อและช่วงเวลา
sudo doveadm search -u [email protected] \
SUBJECT 'สัญญา' SINCE 2024-01-01 BEFORE 2025-01-01
# ดึงอีเมลที่พบออกมา
sudo doveadm fetch -u [email protected] 'hdr.subject hdr.from hdr.date' \
FROM '[email protected]' | head -40
ขั้นตอนที่ 5: จัดการเมื่อพนักงานลาออก
นี่คือกรณีที่เกิดบ่อยที่สุดและมักจัดการไม่ดี ขั้นตอนที่ควรทำ
- อย่าลบบัญชีทันที ให้ระงับการล็อกอินแทน
- ตั้งการส่งต่ออีเมลไปยังผู้รับช่วงงาน
- ตั้งข้อความตอบกลับอัตโนมัติแจ้งผู้ติดต่อ
- ส่งออกกล่องจดหมายเก็บไว้ตามนโยบาย
- เมื่อครบระยะเวลาที่กำหนด เช่น 6-12 เดือน จึงลบบัญชี
# ระงับการล็อกอินแต่ยังรับอีเมลได้
sudo doveadm user [email protected]
# ตั้งใน DirectAdmin หรือ Plesk ที่หน้าจัดการอีเมล
# ส่งออกกล่องจดหมายทั้งหมด
sudo doveadm fetch -u [email protected] text mailbox '*' \
| gzip > /srv/mail-archive/staff/leaving-$(date +%F).mbox.gz
# ตั้งส่งต่อ
echo '[email protected]: [email protected]' >> /etc/postfix/virtual
sudo postmap /etc/postfix/virtual && sudo systemctl reload postfix
ขั้นตอนที่ 6: ควบคุมสิทธิ์การเข้าถึง
ข้อมูลที่จัดเก็บไว้มีอีเมลของทุกคนในองค์กร จึงต้องควบคุมเข้มกว่าระบบอีเมลปกติ
- ให้สิทธิ์เข้าถึงเฉพาะบุคคลที่จำเป็น และจำกัดจำนวนให้น้อยที่สุด
- บันทึกทุกครั้งที่มีการค้นหา ว่าใครค้นอะไรเมื่อไรและด้วยเหตุผลใด
- กำหนดให้ต้องได้รับอนุมัติเป็นลายลักษณ์อักษรก่อนค้นหา
- เก็บที่เก็บข้อมูลแบบเข้ารหัส
# บันทึกการเข้าถึง
sudo nano /etc/rsyslog.d/50-archive-access.conf
:programname, isequal, "doveadm" /var/log/archive-access.log
& stop
ขั้นตอนที่ 7: ลบเมื่อพ้นกำหนด
การเก็บตลอดไปไม่ใช่นโยบายที่ดี ทั้งเรื่องต้นทุนและความเสี่ยงทางกฎหมาย
#!/bin/bash
# ลบข้อมูลที่เก็บเกินกำหนด
YEARS=5
DEST=/srv/mail-archive
CUTOFF=$(date -d "$YEARS years ago" +%Y-%m)
find "$DEST" -maxdepth 1 -type d -name '20*' | while read -r d; do
m=$(basename "$d")
if [[ "$m" < "$CUTOFF" ]]; then
echo "จะลบ $d (เก่ากว่า $CUTOFF)"
# ลบจริงเมื่อยืนยันแล้ว
# rm -rf "$d"
fi
done
ทำการลบเป็นกระบวนการที่มีการอนุมัติ ไม่ใช่สคริปต์ที่รันเองโดยไม่มีใครตรวจ และบันทึกไว้เป็นหลักฐานว่าลบอะไรไปเมื่อไร