אירוח עצמי

דרישות

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

  • מַעֲרֶכֶת הַפעָלָה: שרת מבוסס לינוקס (למשל אובונטו 22.04+).
  • אֶמְצָעִי: 1 vCPUs ו-2GB RAM
  • גישה לשורשים: הרשאות ניהול לביצוע פקודות.
  • שם דומיין: דומיין מותאם אישית מוכן לתצורת DNS.
  • IP נקי: ודא שלשרת שלך יש כתובת IP נקייה ללא מוניטין ספאם קודם על ידי בדיקת רשימות שחורות. מידע נוסף כָּאן.

[!עֵצָה] ראה את הרשימה שלנו של ספקי שרתי דואר מדהימים

Cloud-init / נתוני משתמש

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

אפשרויות

  • EMAIL - EMAIL משתנה סביבה המשמש לתזכורות תפוגה של certbot
  • DOMAIN - דומיין מותאם אישית המשמש להגדרת אירוח עצמי
  • 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ממשק אינטרנט לכל אינטראקציות המנהל
API4000שכבת API לבסיסי נתונים מופשטים
בריאף אחדעבודת רקע ורץ משימות
SMTP465/587שרת SMTP לאימייל יוצא
SMTP בריאף אחדעבודת רקע SMTP
MX2525החלפת דואר עבור דואר נכנס והעברת דואר אלקטרוני
IMAP993/2993שרת IMAP לניהול דואר נכנס ותיבות דואר
POP3995/2995שרת POP3 לניהול דואר נכנס ותיבות דואר
SQLite3456שרת SQLite לאינטראקציות עם מסדי נתונים של sqlite
SQLite Breeאף אחדעבודת רקע של SQLite
CalDAV5000שרת CalDAV לניהול לוח שנה
MongoDB27017מסד נתונים MongoDB עבור רוב ניהול הנתונים
Redis6379Redis עבור מטמון וניהול מצב
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>אוטומטי
CNAMEAPI<שם_דומיין>אוטומטי
CNAMEקלדב<שם_דומיין>אוטומטי
CNAMEקופצני fe<שם_דומיין>אוטומטי
CNAMEimap<שם_דומיין>אוטומטי
CNAMEmx<שם_דומיין>אוטומטי
CNAMEפופ3<שם_דומיין>אוטומטי
CNAMEsmtp<שם_דומיין>אוטומטי
MX"@", ".", או ריקmx.<domain_name> (עדיפות 0)אוטומטי
TXT"@", ".", או ריק"v=spf1 a -all"אוטומטי
הפוך רשומת DNS / PTR

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

יציאה 25 חסומה

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

עלייה למטוס

  1. פתח את דף הנחיתה נווט אל https://<domain_name>, החלף את <domain_name> בדומיין שהוגדר בהגדרות ה-DNS שלך. אתה אמור לראות את דף הנחיתה של העבר אימייל.

  2. התחבר והכנס לדומיין שלך

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

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

בּוֹחֵן

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

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

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

סוּגשם מארחנָמָלאבטחת חיבוראימות
SMTPsmtp.<domain_name>465SSL / TLSסיסמה רגילה
IMAPimap.<domain_name>993SSL / 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

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

mxtoolbox

Google Postmaster Tools

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

spamhaus

ספאם