เปลี่ยนคอนฟิก mailbox เป็น Maildir

โดยดีฟอลต์ของโปรแกรมรับส่งเมล์ เช่น 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.

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.