โดยดีฟอลต์ของโปรแกรมรับส่งเมล์ เช่น postfix เมื่อได้รับเมล์แล้ว จะแยกเป็นไฟล์ตามชื่อ user เก็บไว้ในไดเรคทอรี /var/spool/mail/ หรือ /var/mail/ (soft link)
ในบทความนี้จะกล่าวถึงการแก้ไขคอนฟิกที่อยู่ไฟล์ mailbox ของ postfix และ dovecot ให้เก็บเป็นรูปแบบ Maildir ไว้ใน home ของ user (qmail-style)
คอนฟิก Maildir ของ postfix
คอนฟิกของ postfix ที่ระบุที่อยู่ mailbox คือ “home_mailbox” ซึ่งดีฟอลต์คือ Mailbox หมายถึงเก็บไฟล์ mailbox ของ user ในรูปแบบ /var/spool/mail/user
การแก้ไขคอนฟิกให้เก็บเมล์ไว้แบบ Maildir ใน home ของ user
home_mailbox = Maildir/
รันคำสั่ง service เพื่อรีโหลดเซอร์วิส postfix ให้คอนฟิกใหม่มีผล
[root@fc14-64a ~]# service postfix reload Reloading postfix: [ OK ]
ล็อกอินด้วย user1 ทดสอบส่งเมล์ไปยัง user2
[user1@fc14-64a ~]$ mail user2 Subject: test maildir format . EOT Null message body; hope that's ok
เปลี่ยนเป็นล็อกอินด้วย user2 สังเกตดู จะเห็นว่ามีไดเรคทอรี Maildir/ ถูกสร้างขึ้นใน home
[user2@fc14-64a ~]$ ls -l
total 0
drwx------ 5 user2 user2 36 Jan 3 06:17 Maildir
ลองใช้คำสั่ง mail เพื่ออ่านเมล์
[user2@fc14-64a ~]$ mail No mail for user2
ไม่สามารถอ่านเมล์ได้ เป็นเพราะว่าคำสั่ง mail โดยดีฟอลต์จะไปอ่านไฟล์ mailbox จากค่าตัวแปร $MAIL จาก shell ของผู้ใช้
ตรวจสอบค่าตัวแปร $MAIL ใน shell
[user2@fc14-64a ~]$ echo $MAIL /var/spool/mail/user2
การแก้ไข ต้องตั้งค่าตัวแปร MAIL ให้เป็นรูปแบบ Maildir
[user2@fc14-64a ~]$ MAIL=Maildir/
หมายเหตุ ตอนตั้งค่าตัวแปรใน shell ไม่ต้องมีเครื่องหมาย $ นำหน้าตัวแปร
ใช้คำสั่ง mail อ่านเมล์อีกครั้ง จะสามารถอ่านได้
[user2@fc14-64a ~]$ mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "Maildir/": 1 message 1 new >N 1 user1@spalinux.com Mon Jan 3 06:17 17/530 "test maildir format" & exit
คอนฟิก Maildir ของ dovecot
โดยดีฟอลต์ของโปรแกรม dovecot จะเก็บในรูปแบบ Maildir อยู่แล้ว แต่ถ้ามีการเปลี่ยนแปลงไป สามารถแก้ไขคอนฟิก mail_location กลับได้ตามนี้
คอนฟิกไฟล์ของ dovecot คือ /etc/dovecot/dovecot.conf หรือ /etc/dovecot/conf.d/10-mail.conf (สำหรับเวอร์ชั่นใหม่)
mail_location = maildir:~/Maildir
รีโหลดเซอร์วิส dovecot เพื่อให้คอนฟิกใหม่มีผล
[root@fc14-64a ~]# service dovecot reload Reloading Dovecot Imap: [ OK ]
ทดสอบอ่านเมล์ด้วยการ telnet เข้าพอร์ต 110
[user2@fc14-64a ~]$ telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Dovecot ready. USER user2 +OK PASS password +OK Logged in. LIST +OK 1 messages: 1 545 . RETR 1 +OK 545 octets Return-Path: <user1@spalinux.com> X-Original-To: user2 Delivered-To: user2@spalinux.com Received: by fc14-64a.spalinux.com (Postfix, from userid 501) id 75E8B5BA29; Mon, 3 Jan 2011 06:17:29 +0700 (ICT) Date: Mon, 03 Jan 2011 06:17:29 +0700 To: user2@spalinux.com Subject: test maildir format User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Message-Id: <20110102231729.75E8B5BA29@fc14-64a.spalinux.com> From: user1@spalinux.com
= . QUIT +OK Logging out. Connection closed by foreign host.