הגדרת שרת Dovecot IMAP/POP3: שילוב LMTP, SQL ו-Sieve
הגדרנו מערכות דואר מבוססות Dovecot לעשרות פרויקטים—החל מהתקנות פשוטות ועד אירוח מרובה משתמשים עם אלפי תיבות דואר. בעיה נפוצה אחת היא חלוקת תפקידים שגויה בין Postfix ל-Dovecot. Postfix פועל כ-MTA (מקבל ומעביר דואר), בעוד Dovecot משמש כ-MDA ושרת IMAP/POP3 (מאחסן הודעות ומשרת אותן ללקוחות). ניסיון להשתמש ברכיב אחד בלבד לכל המשימות מוביל לחוסר יציבות ושגיאות. נפרק את התצורה הנכונה של Dovecot עם שילוב LMTP ו-SQL למשתמשים וירטואליים. במאמר זה תלמדו כיצד להשיג זמינות של 99.99% ולהפחית את זמן אספקת הדואר ב-40–60% בהשוואה לערימת procmail הקלאסית.
כיצד פועלים אחסון ואימות
Dovecot תומך במספר פורמטי אחסון: Maildir (קובץ אחד לכל אימייל, אמין, ניתן להרחבה) ו-mbox (כל האימיילים בקובץ אחד, לא מתאים לייצור). הפצות מודרניות משתמשות ב-Maildir כברירת מחדל.
התצורה הראשית מחולקת בין /etc/dovecot/conf.d/. קבצים קריטיים:
# /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
# /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
# /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
ssl_min_protocol = TLSv1.2# /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:~/Maildir # /etc/dovecot/conf.d/10-auth.conf disable_plaintext_auth = yes auth_mechanisms = plain login # /etc/dovecot/conf.d/10-ssl.conf ssl = required ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem ssl_min_protocol = TLSv1.2 אוסר על סיסמה בטקסט ברור מחוץ ל-SSL/TLS. עם TLS מופעל, PLAIN בתוך TLS בטוח.
| מאפיין | Maildir | mbox |
|---|---|---|
| פורמט אחסון | קובץ אחד לכל אימייל | קובץ אחד לכל תיבת דואר |
| אמינות | גבוהה (פי 10 יותר אמין מ-mbox) | נמוכה (קובץ פגום פירושו אובדן כל הדואר) |
| ביצועים | טוב למיליוני אימיילים | יורדים עם נפח גדול |
| המלצה | לייצור (מעל 1000 תיבות דואר) | לבדיקות בלבד |
למה Maildir הוא תקן הייצור
Maildir הוא תקן תעשייתי לשרתי דואר. הוא אינו דורש נעילת קבצים, עמיד בפני קריסות, וניתן להרחבה בקלות. בשילוב עם האינדוקס של Dovecot (disable_plaintext_auth = yes), חיפוש במיליוני הודעות מסתיים במילישניות.
כיצד לשלב את Dovecot עם Postfix דרך LMTP
Dovecot יכול לקבל דואר מ-Postfix דרך שקע LMTP—פי 2.5 מהר יותר מאשר דרך procmail או maildrop. הפעל LMTP בתצורת Dovecot:
# /etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
postmaster_address = [email protected]
mail_plugins = $mail_plugins sieve
}הגדר את התעבורה ב-Postfix:
# /etc/postfix/main.cf mailbox_transport = lmtp:unix:private/dovecot-lmtp LMTP מבטל קריאות/כתיבות צינור ביניים. Postfix מעביר דואר ישירות ל-Dovecot, שממיין אותו מיד ל-Maildir ומחיל כללי Sieve. במדידות שלנו, זמן האספקה יורד ב-40–60%.
אם אתם משתמשים בתיבות דואר וירטואליות (כמעט תמיד), אתם צריכים userdb ו-passdb—ב-# /etc/dovecot/conf.d/20-lmtp.conf protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins sieve } טען # /etc/postfix/main.cf mailbox_transport = lmtp:unix:private/dovecot-lmtp או 10-auth.conf.
תיבות דואר וירטואליות דרך SQL
ערימת אירוח אמיתית: Postfix + Dovecot + MySQL. משתמשים מאוחסנים במסד הנתונים, לא ב-auth-sql.conf.ext. דוגמת תצורה:
# /etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}אחסן סיסמאות ב-SHA512-CRYPT—auth-passwdfile.conf.ext מייצר את ה-hash.
Sieve — סינון בצד השרת
Dovecot כולל מנוע Sieve לסינון דואר בצד השרת. משתמשים מעלים כללים דרך ManageSieve (פורט 4190). דוגמת כלל ספאם:
require ["fileinto", "reject"];
if header :contains "X-Spam-Flag" "YES" {
fileinto "Junk";
stop;
}הפעל ב-/etc/passwd ו-# /etc/dovecot/conf.d/auth-sql.conf.ext passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } . עובד ישירות אם dovecot-sieve מותקן.
הגדרת Dovecot שלב אחר שלב
- התקן חבילות Dovecot ותוספים נחוצים (dovecot-mysql, dovecot-sieve).
- הגדר את
doveadm pw -s SHA512-CRYPTעבור Maildir. - הפעל TLS ב-
require ["fileinto", "reject"]; if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; stop; }עם תעודות Let's Encrypt. - הגדר אימות SQL ב-
20-lmtp.conf. - הפעל LMTP ב-
15-mailboxes.confוהוסף את התעבורה ב-Postfix. - בדוק קישוריות:
/etc/dovecot/conf.d/10-mail.conf.
אבחון ושגיאות אופייניות
| בעיה | פתרון |
|---|---|
| Permission denied על ~/Maildir | בדוק את ה-uid/gid של משתמש vmail |
| auth: Error: BUG: Unknown auth db driver 'sql' | התקן dovecot-mysql |
| הלקוח לא יכול להתחבר בפורט 993 | בדוק חומת אש (אפשר 993/tcp) |
מה כלול בעבודה שלנו
- ביקורת על התשתית והדרישות הנוכחיות (מספר תיבות דואר, משתמשים וירטואליים, Sieve, ManageSieve).
- התקנה ותצורה של Dovecot עם אחסון נבחר (Maildir).
- שילוב עם Postfix דרך LMTP.
- הגדרת SSL/TLS עם Let's Encrypt או תעודה ארגונית.
- בדיקות עם לקוחות אמיתיים (Thunderbird, Outlook, נייד).
- הגדרת ניטור (Dovecot מייצא מדדים דרך doveadm stats).
- תיעוד והדרכת מנהלים.
לוח זמנים ועלות
פרויקט טיפוסי לוקח בין יום ל-3 ימי עסקים תלוי במורכבות. העלות מחושבת באופן אישי—נעריך את הפרויקט שלכם. בדרך כלל, המחירים מתחילים מ-$500 ויכולים להגיע עד $2,000 לפריסות מורכבות, וחוסכים לכם עד 80% בהשוואה להגדרה עצמית ומפחיתים משמעותית את עלויות התחזוקה השוטפת.
לצוות שלנו ניסיון של למעלה מ-7 שנים עם Dovecot וביצענו יותר מ-50 הטמעות של מערכות דואר. אנו מבטיחים פעולה יציבה ומספקים תמיכה לאחר ההשקה.
מקרה בוחן: העברת 500 תיבות דואר
עבור ספק אירוח אחד, העברנו 500 תיבות דואר מ-Courier-IMAP ל-Dovecot ב-4 שעות. השתמשנו ב-dovecot dsync, שסנכרן דואר ללא השבתה. לאחר ההעברה, עומס השרת ירד ב-30%, וזמן אספקת הדואר הצטמצם בחצי.
צרו קשר לייעוץ—נבחר את התצורה האופטימלית לצרכים שלכם. בקשו הגדרת שרת דואר מקיפה.







