Mailman عبارة عن SPA مكتوبة بلغة React لمساعدتك في إدارة قاعدة بيانات خادم البريد الإلكتروني الخاص بك.
يجب أن يكون لديك خادم بريد فعال مع نموذج قاعدة البيانات الذي قدمه توماس ليستر في برنامجه التعليمي الرائع لخادم البريد: Mailserver mit Dovecot وPostfix وMySQL وRspamd ضمن Debian 9 Stretch
قم بتحديث أذونات مستخدم قاعدة بيانات vmail للسماح بإدراج الاستعلامات وتحديثها وحذفها:
grant select , insert, update , delete on vmail. * to ' vmail ' @ ' localhost ' identified by ' vmaildbpass ' ;
أو قم بإنشاء مستخدم جديد:
grant select , insert, update , delete on vmail. * to ' vmail_mailman ' @ ' localhost ' identified by ' vmaildbpass ' ;
إذا كان لديك docker
مثبتًا على الخادم الخاص بك، فيمكنك تشغيل Mailman في حاوية عامل إرساء وإلا فانتقل إلى قسم النشر لمعرفة كيفية نشره يدويًا.
قم بتنزيل الملف sample.env
wget https://github.com/phiilu/mailman/raw/master/sample.env -O .env
قم بتحديث المتغيرات في .env
ثم ابدأ تشغيل mailman:
docker run -d --net= " host " --env-file .env --restart=always --name mailman phiilu/mailman
توضيح:
-d
يقوم بتشغيل الحاوية كعملية خفية تُعرف أيضًا باسم الخلفية--net="host"
يوجه عامل الإرساء لمشاركة الشبكة مع المضيف. هذا مطلوب للوصول إلى قاعدة بيانات vmail--env-file .env
يعين متغيرات البيئة في الحاوية--name mailman
يعين اسم حاوية عامل الإرساء إلى mailmanعامل ميناء مع تكوين المجلد الفرعي:
إذا كنت تريد الوصول إلى mailman عبر مجلد فرعي /mailman
بدلاً من http root /
، فيجب عليك تعديل ما يلي:
قم بتنزيل الملف sample.subfolder.env
wget https://github.com/phiilu/mailman/raw/master/sample.subfolder.env -O .env
قم بتحديث المتغيرات في .env
ثم ابدأ تشغيل mailman باستخدام العلامة:subfolder:
docker run -d --net= " host " --env-file .env --restart=always --name mailman phiilu/mailman:subfolder
ملاحظة: صورة Docker هذه مخصصة للمسار /mailman
فقط! لا يمكن تغييره.
sudo apt install build-essential python
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
بعد تثبيت nvm، يمكنك تسجيل الخروج وتسجيل الدخول مرة أخرى.
تثبيت العقدة مع nvm
nvm install 9.1.0
$ node -v
v9.1.0
$ npm -v
5.5.1
npm i -g pm2
يكون الأمر أسهل إذا قمت باستنساخ Mailman في الدليل الرئيسي لمستخدم غير جذر.
git clone https://github.com/phiilu/mailman.git
cp sample.env .env
افتح .env باستخدام محرر نصوص وقم بتكييف متغيرات البيئة مع التكوين الخاص بك:
MAILMAN_SECRET
سلسلة عشوائية طويلة وفريدة لتوقيع رمز JWTMAILMAN_DB_ENGINE
المحرك الذي يستخدمه ساعي البريد. الإعدادات الافتراضية لماريا إذا لم يتم إعطاء قيمة.MAILMAN_DB_USER
مستخدم قاعدة بيانات vmail
MAILMAN_DB_PASSWORD
كلمة المرور لمستخدم قاعدة بيانات vmail
MAILMAN_DB_DATABASE
قاعدة بيانات vmail
MAILMAN_HOST
عنوان IP الذي يرتبط به ساعي البريد. الافتراضي هو 0.0.0.0
MAILMAN_PORT
الذي يرتبط به ساعي البريد بمنفذ TCP. الافتراضي هو 4000
MAILMAN_BASENAME
لقاعدة HTTP. الافتراضي هو /
MAILMAN_ADMIN
عنوان البريد الإلكتروني للمستخدم، المسموح له بإدارة قاعدة بيانات vmail
تكوين المجلد الفرعي:
إذا كنت تريد الوصول إلى mailman عبر مجلد فرعي /mailman
بدلاً من http root /
، فيجب عليك تعديل ما يلي:
يجب تنفيذ هذه الخطوات قبل إنشاء Mailman!
mailman/client/package.json
وقم بتغيير "homepage": "http://localhost:4000/"
إلى "homepage": "http://localhost:4000/mailman"
mailman/client/.env.production
وقم بتغيير REACT_APP_BASENAME=/
إلى REACT_APP_BASENAME=/mailman
mailman/.env
وقم بتغيير MAILMAN_BASENAME=/
إلى MAILMAN_BASENAME=/mailman
npm install && cd client && npm install && cd - && npm run build
pm2
إذا كان يعمل بالفعل مع pm2 kill
npm start
لإنشاء تجزئة عشوائية، يمكنك استخدام الأمر في جهازك الطرفي:
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 128 ; echo ' '
cd mailman && npm install && cd client && npm install && cd - && npm run build
npm start
يجب أن يعمل Mailman الآن على المنفذ 4000
للخادم.
قم بتشغيل الأمر التالي داخل دليل mailman
git stash && git pull && npm install && cd client && npm install && cd - && npm run build && pm2 restart all
docker pull phiilu/mailman:latest
بعد سحب الصورة الجديدة، قم فقط ببدء حاوية جديدة.
server {
listen 80 ;
server_name mailman.example.org;
##
## Uncomment one of the two possibilities
##
# Subdomain
#location / {
# proxy_pass http://localhost:4000;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
#}
# Subfolder
#location /mailman {
# proxy_pass http://localhost:4000;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
#}
}
إذا كنت تريد استخدام Catch All عناوين البريد الإلكتروني، فيرجى الرجوع إلى دليل توماس:
هل يمكن تحقيق ذلك مع إعداد التقاط جميع عناوين البريد الإلكتروني؟ (الألمانية)
هذا المشروع مرخص بموجب ترخيص MIT