הגדרת ממסר דואר לשליחת התראות משרתים
מצב טיפוסי: משימת cron נכשלת בלילה, Zabbix רושם תקרית, אבל ההתראה לא מגיעה לשום מקום כי השרת מנסה לשלוח דואר ישירות בפורט 25, שחסום על ידי הספק או האחסון. האפליקציה מקבלת Connection refused או 554 5.7.1 Relay access denied, המייל אובד, והתקרית לא מתגלה. נתקלנו בזה עשרות פעמים—אז פיתחנו תהליך הגדרת ממסר מוכח שמבטיח מסירה.
ממסר דואר פותר את זה בשלב אחד: השרת שולח דואר לשער SMTP מהימן, שיודע להעביר אותו הלאה. מאמר זה מכסה הגדרה ספציפית, טעויות נפוצות, ומקרים לתשתיות שונות.
למה שליחה ישירה לא עובדת?
רוב ספקי האחסון ופלטפורמות הענן חוסמים פורט 25 כברירת מחדל—זו הגנה מפני ספאם. גם אם הפורט פתוח, כתובות IP של שרתים לעיתים קרובות מגיעות לרשימות שחורות. בנוסף, שרתי דואר (Exchange, Yandex 360) דורשים אימות ו-TLS. בלי ממסר, ההתראות שלך יאבדו.
Postfix כממסר מקומי: הגדרה מינימלית
עבור רוב השרתים, הגדרת Postfix במצב לוויין מספיקה—הוא לא מקבל דואר נכנס, לא שומר תור ארוך, פשוט מעביר הכל לממסר עליון.
# /etc/postfix/main.cf
myhostname = app01.internal.example.com
mydomain = internal.example.com
myorigin = $mydomain
relayhost = [smtp.sendgrid.net]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
inet_interfaces = loopback-only
mydestination = קובץ האישורים:
# /etc/postfix/sasl_passwd [smtp.sendgrid.net]:587 apikey:SG.xxxxxxxxxxxx לאחר היצירה, בצע hash והפעל מחדש:
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
systemctl reload postfixבמקום SendGrid, כל SMTP יעבוד: Amazon SES (# /etc/postfix/main.cf myhostname = app01.internal.example.com mydomain = internal.example.com myorigin = $mydomain relayhost = [smtp.sendgrid.net]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = encrypt smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt inet_interfaces = loopback-only mydestination = ), Mailgun, Exchange/Office 365 ארגוני, או Postfix משלך על שרת ייעודי.
השוואה בין ממסרי SMTP פופולריים
| ספק | פורט | אימות | מגבלה חינמית | מחיר אחרי המגבלה |
|---|---|---|---|---|
| SendGrid | 587/2525 | מפתח API | 100 מיילים ליום | החל מ-$19.95 לחודש |
| Amazon SES | 587/2587 | מפתח SMTP | 62,000 מיילים בחודש | $0.10 לכל 1,000 מיילים |
| Mailgun | 587/465 | התחברות SMTP | 5,000 מיילים בחודש | $35 עבור 50,000 מיילים |
| ממסר פנימי | 25 (מהימן) | רשימת IP מותרת | ללא הגבלה | רק עלויות שרת |
מתי צריך ממסר פנימי במקום SaaS חיצוני
בתשתיות מבודדות—בנקים, מגזר ממשלתי, רשתות היקפיות ללא גישה לאינטרנט—ספקי SMTP חיצוניים לא זמינים. במקרים כאלה, אנו מקימים שרת ממסר פנימי: Postfix אחד עם # /etc/postfix/sasl_passwd [smtp.sendgrid.net]:587 apikey:SG.xxxxxxxxxxxx פתוח לרשתות משנה מהימנות ו-smarthost מוגדר לשרת הדואר הארגוני.
# relay.internal — принимает от 10.0.0.0/8, пересылает на Exchange
mynetworks = 127.0.0.0/8, 10.0.0.0/8
relayhost = [mail.corp.example.com]:25
relay_domains =
smtpd_recipient_restrictions = permit_mynetworks, rejectממסר כזה לא דורש אימות משרתים פנימיים—הם נמצאים ב-postmap /etc/postfix/sasl_passwd chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db systemctl reload postfix . Exchange מקבל מהממסר דרך מחבר מבוסס IP.
איך לבחור בין ממסר חיצוני לפנימי?
אנו ממליצים על ממסר חיצוני לתשתיות ענן—זה זול יותר וקל יותר לתחזוקה. ממסר פנימי מיועד לסביבות עם דרישות אבטחה ובידוד גבוהות. יש לנו ניסיון בהגדרת שניהם: מעל 80 פרויקטים, כולל בנקים וגופים ממשלתיים.
בדיקות ואבחון
לאחר ההגדרה, בדוק מיד:
# Отправить тестовое письмо
echo "Test relay $(hostname)" | mail -s "relay test" [email protected]
# Следить за очередью
mailq
postqueue -f # принудительная попытка доставки
# Логи в реальном времени
journalctl -u postfix -fטעות נפוצה היא email-smtp.eu-west-1.amazonaws.com:587 עם סיסמה נכונה. הסיבה בדרך כלל היא ש-mynetworks לא עודכן לאחר עריכת קובץ הטקסט (# relay.internal — принимает от 10.0.0.0/8, пересылает на Exchange mynetworks = 127.0.0.0/8, 10.0.0.0/8 relayhost = [mail.corp.example.com]:25 relay_domains = smtpd_recipient_restrictions = permit_mynetworks, reject לא הופעל מחדש), או שהסיסמה מכילה תווים מיוחדים שצריך לברוח.
דוגמה: פתרון שגיאת אימות SASL
בעת שימוש בסיסמה עם `%` ב-SendGrid, יש לברוח אותה ב-`sasl_passwd` כ-`%%`. אחרת, Postfix מפרש `%` כתו החלפה. לאחר הבריחה, הפעל מחדש את `postmap`.מה השירות שלנו כולל
אנו מגדירים ממסר Postfix על כל שרת או מארח ממסר מרכזי אחד לכל התשתית. אנו מתחברים לספק העליון שבחרת: SendGrid, SES, Mailgun, SMTP ארגוני. אנו מגדירים TLS, אימות, הגבלות IP. אנו מוודאים מסירה מכל מקורות ההתראות: cron, Zabbix/Prometheus Alertmanager, יישומים.
לוח זמנים: מכמה שעות לשרת אחד עד 1-2 ימים לתשתית עם עשרות מארחים והגבלות רשת לא סטנדרטיות. קבל ייעוץ לפרויקט שלך—נעריך את המורכבות ונבחר את הפתרון האופטימלי כולל הכל.
איזה ממסר מתאים לתשתית שלי?
לפרויקטים קטנים (עד 10 שרתים), ספק SMTP חיצוני מספיק—הוא לא דורש שרת ייעודי וחוסך זמן תחזוקה. למערכות גדולות ומבוזרות עם עשרות מארחים ודרישות זמינות מחמירות, עדיף להקים ממסר פנימי—הוא נותן שליטה מלאה על תורים ויומנים. נעזור לך להחליט ולהגדיר את הפתרון על כל פלטפורמה.
להבנה מעמיקה של מנגנוני Postfix, מומלץ התיעוד הרשמי.







