אירוח עצמי
הַתקָנָה
דרישות
לפני הפעלת סקריפט ההתקנה, ודא שיש לך את הדברים הבאים:
- מַעֲרֶכֶת הַפעָלָה: שרת מבוסס לינוקס (למשל אובונטו 22.04+).
- אֶמְצָעִי: 1 vCPUs ו-2GB RAM
- גישה לשורשים: הרשאות ניהול לביצוע פקודות.
- שם דומיין: דומיין מותאם אישית מוכן לתצורת DNS.
- IP נקי: ודא שלשרת שלך יש כתובת IP נקייה ללא מוניטין ספאם קודם על ידי בדיקת רשימות שחורות. מידע נוסף כָּאן.
[!עֵצָה] ראה את הרשימה שלנו של ספקי שרתי דואר מדהימים
Cloud-init / נתוני משתמש
רוב ספקי הענן תומכים בתצורת ענן-init כאשר השרת הפרטי הוירטואלי (VPS) מסודר. זוהי דרך מצוינת להגדיר כמה קבצים ומשתני סביבה מבעוד מועד לשימוש על ידי לוגיקה של ההגדרה הראשונית של הסקריפטים, שתעקוף את הצורך להנחות בזמן שהסקריפט פועל לקבלת מידע נוסף.
אפשרויות
EMAIL
-EMAIL
משתנה סביבה המשמש לתזכורות תפוגה של certbotDOMAIN
- דומיין מותאם אישית המשמש להגדרת אירוח עצמי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 Bree | אף אחד | עבודת רקע של SQLite |
CalDAV | 5000 | שרת CalDAV לניהול לוח שנה |
MongoDB | 27017 | מסד נתונים MongoDB עבור רוב ניהול הנתונים |
Redis | 6379 | Redis עבור מטמון וניהול מצב |
SQLite | אף אחד | מסדי נתונים של SQLite עבור תיבות דואר מוצפנות |
נתיבי קבצים חשובים
הערה: נתיב מארח להלן יחסית ל /root/forwardemail.net/self-hosting/
.
רְכִיב | נתיב מארח | נתיב מיכל |
---|---|---|
MongoDB | ./mongo-backups | /backups |
Redis | ./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 |
תעודות CA | ./ssl/cert.pem | /app/ssl/cert.pem |
מפתח פרטי DKIM | ./ssl/dkim.key | /app/ssl/dkim.key |
[!חָשׁוּב] שמור את
.env
קובץ בצורה מאובטחת. זה קריטי להתאוששות במקרה של כשל. אתה יכול למצוא את זה ב/root/forwardemail.net/self-hosting/.env
.
תְצוּרָה
הגדרת DNS ראשונית
בספק ה-DNS שבחרת, הגדר את רשומות ה-DNS המתאימות. רשום משהו בסוגריים (<>
) הוא דינמי ויש לעדכן אותו בערך שלך.
סוּג | שֵׁם | תוֹכֶן | TTL |
---|---|---|---|
A | "@", ".", או ריק | <כתובת_ip> | אוטומטי |
CNAME | API | <שם_דומיין> | אוטומטי |
CNAME | קלדב | <שם_דומיין> | אוטומטי |
CNAME | קופצני fe | <שם_דומיין> | אוטומטי |
CNAME | imap | <שם_דומיין> | אוטומטי |
CNAME | mx | <שם_דומיין> | אוטומטי |
CNAME | פופ3 | <שם_דומיין> | אוטומטי |
CNAME | smtp | <שם_דומיין> | אוטומטי |
MX | "@", ".", או ריק | mx.<domain_name> (עדיפות 0) | אוטומטי |
TXT | "@", ".", או ריק | "v=spf1 a -all" | אוטומטי |
הפוך רשומת DNS / PTR
רשומות DNS הפוך (rDNS) או רשומות מצביע הפוך (רשומות PTR) חיוניות עבור שרתי דוא"ל מכיוון שהן עוזרות לאמת את הלגיטימיות של השרת ששולח את האימייל. כל ספק ענן עושה זאת בצורה שונה, אז תצטרך לחפש כיצד להוסיף "DNS הפוך" כדי למפות את המארח וה-IP לשם המארח המתאים לו. ככל הנראה בקטע הרשת של הספק.
יציאה 25 חסומה
חלק מספקי האינטרנט וספקי הענן חוסמים 25 כדי להימנע משחקנים גרועים. ייתכן שיהיה עליך להגיש כרטיס תמיכה כדי לפתוח את יציאה 25 עבור SMTP / דואר אלקטרוני יוצא.
עלייה למטוס
-
פתח את דף הנחיתה נווט אל https://<domain_name>, החלף את <domain_name> בדומיין שהוגדר בהגדרות ה-DNS שלך. אתה אמור לראות את דף הנחיתה של העבר אימייל.
-
התחבר והכנס לדומיין שלך
- היכנס עם אימייל וסיסמה חוקיים.
- הזן את שם הדומיין שברצונך להגדיר (זה חייב להתאים לתצורת ה-DNS).
- עקוב אחר ההנחיות כדי להוסיף את הדרוש MX ו TXT רשומות לאימות.
- השלם את ההגדרה
- לאחר האימות, גש לדף הכינויים כדי ליצור את הכינוי הראשון שלך.
- אופציונלי, הגדר SMTP עבור דוא"ל יוצא בתוך ה הגדרות דומיין. זה דורש רשומות DNS נוספות.
[!פֶּתֶק] שום מידע לא נשלח מחוץ לשרת שלך. האפשרות לאירוח עצמי והחשבון הראשוני מיועדים רק לכניסת המנהל ולתצוגת האינטרנט לניהול דומיינים, כינויים ותצורות דוא"ל קשורות.
בּוֹחֵן
יצירת הכינוי הראשון שלך
- נווט אל דף הכינויים פתח את דף ניהול הכינוי:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- הוסף כינוי חדש
- נְקִישָׁה הוסף כינוי (מימין למעלה).
- הזן את שם הכינוי והתאם את הגדרות הדוא"ל לפי הצורך.
- (אופציונלי) הפעל IMAP/POP3/CalDAV תמיכה על ידי סימון תיבת הסימון.
- נְקִישָׁה צור כינוי.
- הגדר סיסמה
- נְקִישָׁה צור סיסמה כדי ליצור סיסמה מאובטחת.
- סיסמה זו תידרש כדי להיכנס ללקוח הדוא"ל שלך.
- הגדר את לקוח הדוא"ל שלך
- השתמש בלקוח דוא"ל כמו Thunderbird.
- הזן את שם הכינוי והסיסמה שנוצרה.
- הגדר את IMAP ו SMTP הגדרות בהתאם.
הגדרות שרת דואר אלקטרוני
שם משתמש: <alias name>
סוּג | שם מארח | נָמָל | אבטחת חיבור | אימות |
---|---|---|---|---|
SMTP | smtp.<domain_name> | 465 | SSL / TLS | סיסמה רגילה |
IMAP | imap.<domain_name> | 993 | SSL / TLS | סיסמה רגילה |
שולח/קבל את האימייל הראשון שלך
לאחר ההגדרה, אתה אמור להיות מסוגל לשלוח ולקבל דוא"ל לכתובת הדוא"ל החדשה שלך שנוצרה ומתארחת בעצמך!
תַחזוּקָה
How do I backup my data
עקוב אחר ה להתקין סקריפט ולבחור option 2
בהנחיה.
How do I renew my certificates
עקוב אחר ה להתקין סקריפט ולבחור option 3
בהנחיה.
How do I upgrade to the latest forward email code
עקוב אחר ה להתקין סקריפט ולבחור option 4
בהנחיה.
How do I restore from a backup
עקוב אחר ה להתקין סקריפט ולבחור option 6
בהנחיה.
פתרון בעיות
Why is the certbot acme challenge failing
המהומה הנפוצה ביותר היא ש-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 ועדכוני האתגר באופן אוטומטי.
What is the basic auth username and password
עבור אירוח עצמי, אנו מוסיפים קוד אימות מקורי לדפדפן בפעם הראשונה עם שם משתמש פשוט (admin
) וסיסמה (נוצרת באופן אקראי בהגדרה הראשונית). אנחנו פשוט מוסיפים את זה כהגנה למקרה שהאוטומציה/מגרדים ינצחו אותך איכשהו כדי להירשם לראשונה לחוויית האינטרנט. אתה יכול למצוא את הסיסמה הזו לאחר ההגדרה הראשונית שלך .env
קובץ תחת AUTH_BASIC_USERNAME
ו AUTH_BASIC_PASSWORD
.
How do I know what is running
אתה יכול לרוץ docker ps
כדי לראות את כל המיכלים הפועלים שמסתובבים מה- docker-compose-self-hosting.yml
קוֹבֶץ. אתה יכול גם לרוץ docker ps -a
כדי לראות הכל (כולל מכולות שאינן פועלות).
How do I know if something isn't running that should be
אתה יכול לרוץ docker ps -a
לראות הכל (כולל מכולות שאינן פועלות). ייתכן שתראה יומן יציאה או הערה.
How do I find logs
אתה יכול לקבל יותר יומנים באמצעות docker logs -f <container_name>
. אם משהו יצא, זה כנראה קשור ל .env
הקובץ מוגדר בצורה שגויה.
בתוך ממשק המשתמש של האינטרנט, אתה יכול להציג /admin/emails
ו /admin/logs
עבור יומני דוא"ל יוצאים ויומני שגיאה בהתאמה.
Why are my outgoing emails timing out
אם אתה רואה הודעה כמו הזמן הקצוב לחיבור בזמן ההתחברות לשרת MX... אז ייתכן שתצטרך לבדוק אם יציאה 25 חסומה. זה נפוץ שספקי אינטרנט או ספקי ענן חוסמים זאת כברירת מחדל, כאשר ייתכן שתצטרך לפנות לתמיכה / להגיש כרטיס כדי לפתוח את זה.
What tool(s) should I use to test email configuration best practices and IP reputation
תסתכל על שלנו שאלות נפוצות כאן.
השתמש בכתובת ה-IP של השרת שלך כדי לבדוק מול האתרים הבאים אם הם ברשימה שחורה. זה, למרבה הצער, לא נדיר שלספקי ענן נפוצים יש בעיות במוניטין ה-IP לשימוש בספאם בדוא"ל. אם אתה רואה את ה-IP שלך ברשימה שחורה, מומלץ לסובב שרת חדש ולבדוק את כתובת ה-IP החדשה.