אירוח עצמי

תחילת העבודה

פתרון הדוא"ל שלנו, המאוחסן בעצמו, כמו כל המוצרים שלנו, הוא 100% קוד פתוח - גם בקצה הקדמי וגם בקצה האחורי. משמעות הדבר היא:

  1. שקיפות מלאה: כל שורת קוד שמעבדת את האימיילים שלכם זמינה לבדיקה ציבורית
  2. תרומות קהילתיות: כל אחד יכול לתרום לשיפורים או לתקן בעיות
  3. אבטחה באמצעות פתיחות: ניתן לזהות ולתקן פגיעויות על ידי קהילה עולמית
  4. ללא נעילת ספק: אתם לעולם לא תלויים בקיומה של החברה שלנו

כל בסיס הקוד זמין ב-GitHub בכתובת https://github.com/forwardemail/forwardemail.net, תחת רישיון MIT.

הארכיטקטורה כוללת מכולות עבור:

  • שרת SMTP לדוא"ל יוצא
  • שרתי IMAP/POP3 לאחזור דוא"ל
  • ממשק אינטרנט לניהול
  • מסד נתונים לאחסון תצורה
  • Redis לאחסון במטמון וביצועים
  • SQLite לאחסון תיבות דואר מאובטח ומוצפן

Note

הקפידו לבדוק את בלוג באחסון עצמי שלנו

ולמי שמעוניין בגרסה מפורטת יותר שלב אחר שלב, עיינו במדריכים שלנו המבוססים על אובונטו או דביאן.

דרישות

לפני הפעלת סקריפט ההתקנה, ודא שברשותך הדברים הבאים:

  • מערכת הפעלה: שרת מבוסס לינוקס (תומך כעת ב-Ubuntu 22.04+).
  • משאבים: מעבד vCPU אחד ו-2GB RAM
  • גישת Root: הרשאות ניהול לביצוע פקודות.
  • שם דומיין: דומיין מותאם אישית מוכן להגדרת DNS.
  • IP נקי: ודא שלשרת שלך יש כתובת IP נקייה ללא מוניטין של ספאם קודם על ידי בדיקת רשימות שחורות. מידע נוסף כָּאן.
  • כתובת IP ציבורית עם תמיכה בפורט 25
  • יכולת להגדיר PTR הפוך
  • תמיכה ב-IPv4 ו-IPv6

Tip

ראה את הרשימה שלנו של ספקי שרתי דואר מעולים

התחלת ענן / נתוני משתמש

רוב ספקי הענן תומכים בתצורת cloud-init עבור מועד הקמת השרת הפרטי הווירטואלי (VPS). זוהי דרך מצוינת להגדיר מראש קבצים ומשתני סביבה לשימוש על ידי לוגיקת ההגדרה הראשונית של הסקריפטים, מה שיעקוף את הצורך לבקש מידע נוסף בזמן שהסקריפט פועל.

אפשרויות

  • EMAIL - כתובת דוא"ל המשמשת לתזכורות תפוגת תוקף של certbot
  • DOMAIN - דומיין מותאם אישית (לדוגמה example.com) המשמש להגדרת אירוח עצמי
  • AUTH_BASIC_USERNAME - שם משתמש המשמש בהגדרה הראשונה כדי להגן על האתר
  • AUTH_BASIC_PASSWORD - סיסמה המשמשת בהגדרה הראשונה כדי להגן על האתר
  • /root/.cloudflare.ini - (משתמשי Cloudflare בלבד) קובץ תצורה של cloudflare המשמש את certbot להגדרת DNS. נדרש הגדרת אסימון API דרך dns_cloudflare_api_token. קרא עוד כָּאן.

דוּגמָה:

#cloud-config
write_files:
  - path: /root/.cloudflare.ini
    content: |
      dns_cloudflare_api_token = "xxx"
    owner: root:root
    permissions: '0600'
  - path: /etc/profile.d/env.sh
    content: |
      export EMAIL="test@myemail.com"
      export DOMAIN="mydomain.com"

runcmd:
  - chmod +x /etc/profile.d/env.sh

התקן את

הפעל את הפקודה הבאה בשרת שלך כדי להוריד ולהפעיל את סקריפט ההתקנה:

bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

ניפוי באגים בסקריפט ההתקנה

הוסף DEBUG=true לפני סקריפט ההתקנה לקבלת פלט מפורט:

DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

הנחיות

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • הגדרה ראשונית: הורד את קוד העברת הדוא"ל העדכני ביותר, קבע את ההגדרה של הסביבה, בקשה לדומיין המותאם אישית שלך והגדר את כל האישורים, המפתחות והסודות הדרושים.
  • הגדרת גיבוי: יגדיר cron לגיבוי mongoDB ו-redis באמצעות מאגר תואם S3 לאחסון מאובטח ומרוחק. בנפרד, sqlite יגובה בעת הכניסה אם יהיו שינויים עבור גיבויים מאובטחים ומוצפנים.
  • הגדרת שדרוג: הגדר cron לחיפוש עדכונים ליליים אשר ישקמו ויפעילו מחדש רכיבי תשתית בבטחה.
  • חידוש אישורים: Certbot / lets encrypt משמש לתעודות SSL והמפתחות יפוגו כל 3 חודשים. פעולה זו תחודש את האישורים עבור הדומיין שלך ותמקם אותם בתיקייה הדרושה לצריכת רכיבים קשורים. ראה נתיבי קבצים חשובים
  • שחזור מגיבוי: יפעיל mongodb ו-redis לשחזור מנתוני גיבוי.

הגדרה ראשונית (אפשרות 1)

בחר באפשרות 1. Initial setup כדי להתחיל.

לאחר השלמת התהליך, אמורה להופיע הודעת הצלחה. ניתן אפילו להפעיל את docker ps כדי לראות את הרכיבים פועלים. מידע נוסף על הרכיבים מופיע בהמשך.

שירותים

שם השירות יציאת ברירת מחדל תֵאוּר
אינטרנט 443 ממשק אינטרנט לכל אינטראקציות המנהל
API 4000 שכבת API למסדי נתונים מופשטים
ברי אַף לֹא אֶחָד משימות רקע ורץ משימות
SMTP 465/587 שרת SMTP עבור דוא"ל יוצא
SMTP ברי אַף לֹא אֶחָד עבודת רקע של SMTP
MX 2525 חילופי דואר אלקטרוני עבור דוא"ל נכנס והעברת דוא"ל
IMAP 993/2993 שרת IMAP לניהול דוא"ל נכנס ותיבת דואר
POP3 995/2995 שרת POP3 לניהול דואר נכנס ותיבת דואר
SQLite 3456 שרת SQLite לאינטראקציות עם מסד נתונים של SQLite
SQLite ברי אַף לֹא אֶחָד עבודת רקע של SQLite
CalDAV 5000 שרת CalDAV לניהול לוחות שנה
כרטיסDAV 6000 שרת CardDAV לניהול לוחות שנה
מונגו-די-בי 27017 מסד נתונים של MongoDB לרוב ניהול הנתונים
רדיס 6379 Redis לאחסון במטמון וניהול מצבים
SQLite אַף לֹא אֶחָד מסד נתונים של SQLite עבור תיבות דואר מוצפנות

נתיבי קבצים חשובים

הערה: נתיב המארח למטה הוא יחסי ל-/root/forwardemail.net/self-hosting/.

רְכִיב נתיב המארח נתיב המכולה
מונגו-די-בי ./mongo-backups /backups
רדיס ./redis-data /data
סקווילייט ./sqlite-data /mnt/{SQLITE_STORAGE_PATH}
קובץ Env ./.env /app/.env
אישורי/מפתחות SSL ./ssl /app/ssl/
מפתח פרטי ./ssl/privkey.pem /app/ssl/privkey.pem
תעודת שרשרת מלאה ./ssl/fullchain.pem /app/ssl/fullchain.pem
רשויות אישורים מוסמכים ./ssl/cert.pem /app/ssl/cert.pem
מפתח פרטי של DKIM ./ssl/dkim.key /app/ssl/dkim.key

Important

שמור את קובץ .env בצורה מאובטחת. הוא קריטי לשחזור במקרה של כשל. תוכל למצוא אותו ב-/root/forwardemail.net/self-hosting/.env.

תצורה

הגדרת DNS ראשונית

בספק ה-DNS שבחרת, הגדר את רשומות ה-DNS המתאימות. שימו לב שכל דבר בסוגריים (<>) הוא דינמי ויש לעדכן אותו בערך שלכם.

סוּג שֵׁם תוֹכֶן TTL
A "@", ".", או ריק <כתובת_IP> אוטומטי
CNAME API <שם_הדומיין> אוטומטי
CNAME קלדב <שם_הדומיין> אוטומטי
CNAME קארדדאב <שם_הדומיין> אוטומטי
CNAME קפיצות fe <שם_הדומיין> אוטומטי
CNAME אי-מאפ <שם_הדומיין> אוטומטי
CNAME mx <שם_הדומיין> אוטומטי
CNAME פופ3 <שם_הדומיין> אוטומטי
CNAME smtp <שם_הדומיין> אוטומטי
MX "@", ".", או ריק mx.<שם_דומיין> (עדיפות 0) אוטומטי
TXT "@", ".", או ריק "v=spf1 a -all" אוטומטי

רשומת DNS / PTR הפוכה

רשומות DNS הפוך (rDNS) או רשומות מצביע הפוך (רשומות PTR) חיוניות עבור שרתי דוא"ל מכיוון שהן עוזרות לאמת את הלגיטימיות של השרת ששולח את הדוא"ל. כל ספק ענן עושה זאת בצורה שונה, לכן תצטרכו לחפש כיצד להוסיף "DNS הפוך" כדי למפות את המארח וכתובת ה-IP לשם המארח המתאים לו. סביר להניח שזה יהיה במקטע הרשת של הספק.

פורט 25 חסום

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

קליטה

  1. פתחו את דף הנחיתה נווטו אל https://<שם_הדומיין>, והחליפו את <שם_הדומיין> בדומיין שתצורתו נקבעה בהגדרות ה-DNS שלכם. אתם אמורים לראות את דף הנחיתה של העברת דוא"ל.

  2. התחברו והוסיפו את הדומיין שלכם

  • היכנס באמצעות כתובת דוא"ל וסיסמה תקפים.
  • הזן את שם הדומיין שברצונך להגדיר (שם הדומיין חייב להתאים לתצורת ה-DNS).
  • פעל לפי ההנחיות כדי להוסיף את רשומות MX ו- TXT הנדרשות לאימות.
  1. השלם את ההתקנה
  • לאחר האימות, גשו לדף כינויים כדי ליצור את הכינוי הראשון שלכם.
  • לחלופין, הגדר SMTP עבור דוא"ל יוצא ב הגדרות הדומיין. זה דורש רשומות DNS נוספות.

Note

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

בדיקות

יוצר את הכינוי הראשון שלך

  1. נווטו לדף הכינויים פתחו את דף ניהול הכינויים:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. הוסף כינוי חדש
  • לחץ על הוסף כינוי (למעלה מימין).
  • הזן את שם הכינוי והתאם את הגדרות הדוא"ל לפי הצורך.
  • (אופציונלי) הפעל תמיכה ב- IMAP/POP3/CalDAV/CardDAV על ידי סימון תיבת הסימון.
  • לחץ על צור כינוי.
  1. הגדרת סיסמה
  • לחץ על צור סיסמה כדי ליצור סיסמה מאובטחת.
  • סיסמה זו תידרש כדי להתחבר לתוכנת הדוא"ל שלך.
  1. הגדרת תוכנת הדוא"ל שלך
  • השתמש בתוכנת דוא"ל כמו Thunderbird.
  • הזן את שם הכינוי ואת הסיסמה שנוצרה.
  • קבע את הגדרות IMAP ו- SMTP בהתאם.

הגדרות שרת דוא"ל

שם משתמש: <alias name>

סוּג שם מארח נָמָל אבטחת חיבור אימות
SMTP smtp.<שם_דומיין> 465 SSL / TLS סיסמה רגילה
IMAP imap.<שם_הדומיין> 993 SSL / TLS סיסמה רגילה

שולח/מקבל את האימייל הראשון שלך

לאחר ההגדרה, תוכל לשלוח ולקבל דוא"ל לכתובת הדוא"ל החדשה שיצרת ומתארחת בעצמך!

פתרון בעיות

למה זה לא עובד מחוץ לאובונטו ודביאן

אנחנו מחפשים כעת תמיכה ב-MacOS ונחפש תמיכה באחרים. אנא פתחו קובץ דִיוּן או תרמו אם תרצו לראות תמיכה באחרים.

מדוע אתגר ה-Certbot Acme נכשל

המכשול הנפוצ ביותר הוא שלפעמים certbot / letsencrypt יבקשו 2 אתגרים. עליכם לוודא שאתם מוסיפים BOTH רשומות txt.

דוגמה: ייתכן שתראו שני אתגרים כמו אלה: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

ייתכן גם שהפצת ה-DNS לא הושלמה. ניתן להשתמש בכלים כמו: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. זה ייתן לך מושג אם השינויים ברשומת ה-TXT שלך צריכים לבוא לידי ביטוי. ייתכן גם שמטמון ה-DNS המקומי במארח שלך עדיין משתמש בערך ישן ומיושן או שלא קלט את השינויים האחרונים.

אפשרות נוספת היא להשתמש בשינויי DNS אוטומטיים של cerbot על ידי הגדרת קובץ /root/.cloudflare.ini עם אסימון ה-API ב-cloud-init / user-data שלך בהגדרה הראשונית של VPS או ליצור קובץ זה ולהריץ את הסקריפט שוב. פעולה זו תנהל את שינויי ה-DNS ותאתגר עדכונים באופן אוטומטי.

מהם שם המשתמש והסיסמה הבסיסיים לאימות

עבור אירוח עצמי, אנו מוסיפים חלון קופץ לאימות דפדפן ראשוני עם שם משתמש פשוט (admin) וסיסמה (שנוצרים באופן אקראי בהגדרה הראשונית). אנו מוסיפים זאת רק כהגנה למקרה שאוטומציה/סקראפרים יקדמו אתכם בהרשמה הראשונה לחוויית האינטרנט. תוכלו למצוא סיסמה זו לאחר ההגדרה הראשונית בקובץ .env שלכם תחת AUTH_BASIC_USERNAME ו-AUTH_BASIC_PASSWORD.

איך אני יודע מה פועל

ניתן להריץ את docker ps כדי לראות את כל המכולות הפועלות, אשר מופעלות מקובץ docker-compose-self-hosting.yml. ניתן גם להריץ את docker ps -a כדי לראות הכל (כולל מכולות שאינן פועלות).

איך אני יודע אם משהו שאמור להיות {#how-do-i-know-if-something-isnt-running-that-should-be} לא פועל

ניתן להריץ את docker ps -a כדי לראות הכל (כולל מכולות שאינן פועלות). ייתכן שתראה יומן יציאה או הערה.

כיצד אוכל למצוא יומני רישום

ניתן לקבל עוד יומנים דרך docker logs -f <container_name>. אם משהו יצא, סביר להניח שזה קשור להגדרה שגויה של קובץ .env.

בתוך ממשק המשתמש של האינטרנט, ניתן לצפות ב-/admin/emails וב-/admin/logs עבור יומני דוא"ל יוצא ויומני שגיאות בהתאמה.

מדוע תפוגת הזמן של האימיילים היוצאים שלי מסתיימת

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

אילו כלים עליי להשתמש כדי לבדוק את שיטות העבודה המומלצות של תצורת דוא"ל ואת מוניטין ה-IP

תסתכלו על ה-שאלות נפוצות כאן שלנו.