אירוח עצמי
תחילת העבודה
פתרון הדוא"ל שלנו, המאוחסן בעצמו, כמו כל המוצרים שלנו, הוא 100% קוד פתוח - גם בקצה הקדמי וגם בקצה האחורי. משמעות הדבר היא:
- שקיפות מלאה: כל שורת קוד שמעבדת את האימיילים שלכם זמינה לבדיקה ציבורית
- תרומות קהילתיות: כל אחד יכול לתרום לשיפורים או לתקן בעיות
- אבטחה באמצעות פתיחות: ניתן לזהות ולתקן פגיעויות על ידי קהילה עולמית
- ללא נעילת ספק: אתם לעולם לא תלויים בקיומה של החברה שלנו
כל בסיס הקוד זמין ב-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
- כתובת דוא"ל המשמשת לתזכורות תפוגת תוקף של certbotDOMAIN
- דומיין מותאם אישית (לדוגמה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 / דוא"ל יוצא.
קליטה
-
פתחו את דף הנחיתה נווטו אל https://<שם_הדומיין>, והחליפו את <שם_הדומיין> בדומיין שתצורתו נקבעה בהגדרות ה-DNS שלכם. אתם אמורים לראות את דף הנחיתה של העברת דוא"ל.
-
התחברו והוסיפו את הדומיין שלכם
- היכנס באמצעות כתובת דוא"ל וסיסמה תקפים.
- הזן את שם הדומיין שברצונך להגדיר (שם הדומיין חייב להתאים לתצורת ה-DNS).
- פעל לפי ההנחיות כדי להוסיף את רשומות MX ו- TXT הנדרשות לאימות.
- השלם את ההתקנה
- לאחר האימות, גשו לדף כינויים כדי ליצור את הכינוי הראשון שלכם.
- לחלופין, הגדר SMTP עבור דוא"ל יוצא ב הגדרות הדומיין. זה דורש רשומות DNS נוספות.
Note
לא נשלח מידע מחוץ לשרת שלך. אפשרות האירוח העצמי והחשבון הראשוני מיועדים רק לכניסה של מנהל המערכת ולתצוגת אינטרנט לניהול דומיינים, כינויים ותצורות דוא"ל קשורות.
בדיקות
יוצר את הכינוי הראשון שלך
- נווטו לדף הכינויים פתחו את דף ניהול הכינויים:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- הוסף כינוי חדש
- לחץ על הוסף כינוי (למעלה מימין).
- הזן את שם הכינוי והתאם את הגדרות הדוא"ל לפי הצורך.
- (אופציונלי) הפעל תמיכה ב- IMAP/POP3/CalDAV/CardDAV על ידי סימון תיבת הסימון.
- לחץ על צור כינוי.
- הגדרת סיסמה
- לחץ על צור סיסמה כדי ליצור סיסמה מאובטחת.
- סיסמה זו תידרש כדי להתחבר לתוכנת הדוא"ל שלך.
- הגדרת תוכנת הדוא"ל שלך
- השתמש בתוכנת דוא"ל כמו 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
תסתכלו על ה-שאלות נפוצות כאן שלנו.