interhost

הבלוג
הכל על שרתים, תקשורת ולינוקס

ארכיון פוסטים מהחודש "יוני, 2010"

פתרון קבלת דואר בטופס האתר ל-Gmail

יום שני, 14 ביוני, 2010

לאחרונה פנו אלי מספר לקוחות עם בעיה זהה, לאחר העברת הדומיין שלהם לשרתי הדואר של Gmail מפסיקים להגיע מיילים שנשלחו באמצעות טופס "צור קשר" באתר.

התשובה לבעיה פשוטה, התיבות דואר והדומיין עדיין מודגרים בשרת כתיבות לוקליות (מקומיות) והשרת לרוב מנסה להעביר את הדואר של עמוד "צור קשר" לתיבת דואר באותו דומיין כמו שם האתר. לדוגמא אם כתובת האתר שלכם http://www.interhost.co.il והתיבה שאליה אמורים להגיע הפניות מהאתר היא sales@interhost.co.il אז השרת מעביר את הדואר לתיבה הפנימית במקום לשלוח את המייל לGmail.
למעשה PHP-MAIL לא בודק את ה-MX Record של הדומיין אלא מעביר את הדואר באמצעות sendmail שמותקן על השרת (ומוגדר בקובץ הגדרות php.ini) והוא שולח לאחר בדיקת הגדרות השליחה את המייל הלאה.

טופס "צור קשר" -> PHP-MAIL -> רכיב ה-sendmail שמוגדר ב-php.ini -> העברה של הדואר

בשרתי Directadmin שרת הדואר שמטפל בשליחת מיילים הוא Exim והוא מחליף את ה Sendmail הפופולרי של לינוקס. ניתן גם לראות שמעשה הקובץ Sendmail הוא סימבוליק לינק לאקזים:

ls -lah /usr/sbin/sendmail
lrwxrwxrwx 1 root root 4 2010-01-27 19:25 /usr/sbin/sendmail -> exim

לכן אנו למדים שיש לבדוק את הגדרות שרת הדואר שלנו, ה-Exim. ב-Exim קיים קובץ הגדרות של דומיינים לוקליים שאותם השרת לא מחפש בחוץ אלא בתוכו. לבעלי מערכת Directadmin הנתיב של הקובץ הזה בשרת הוא:

/etc/virtual/domains

הקובץ מכיל את רשימת כל הדומיינים שמוגדרים בשרת, דומיין אחת בכל שורה. בכדי להגיד לשרת שלנו שלא יחפש דומיין ספציפי בשרת אלא יבדוק מה הם ערכי ה MX Records וישלח את הדואר החוצה, אנא צריכים למחוק את הדומיין מהרשימה, לשמור ולבצע אתחול לשרת ה Exim בצורה הבאה:

# cp /etc/virtual/domains /etc/virtual/domains.bak
# perl -w -i -p -e "s/^interhost.co.il\n//g" /etc/virtual/domains
# /etc/init.d/exim restart

החליפו את שם הדומיין שסימנתי בכחול בדומיין שלכם שאתם רוצים למחוק. חשוב לגבות תחילה את קובץ ה-domains ליתר בטחון.

ניתן לעקוב אחרי תעבורת דואר יוצא בקובץ לוג:

tail -f /var/log/exim/mainlog

כאן סיימנו, בהצלחה!