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 pythoncurl -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.1npm i -g pm2يكون الأمر أسهل إذا قمت باستنساخ Mailman في الدليل الرئيسي لمستخدم غير جذر.
git clone https://github.com/phiilu/mailman.gitcp sample.env .envافتح .env باستخدام محرر نصوص وقم بتكييف متغيرات البيئة مع التكوين الخاص بك:
MAILMAN_SECRET سلسلة عشوائية طويلة وفريدة لتوقيع رمز JWTMAILMAN_DB_ENGINE المحرك الذي يستخدمه ساعي البريد. الإعدادات الافتراضية لماريا إذا لم يتم إعطاء قيمة.MAILMAN_DB_USER مستخدم قاعدة بيانات vmailMAILMAN_DB_PASSWORD كلمة المرور لمستخدم قاعدة بيانات vmailMAILMAN_DB_DATABASE قاعدة بيانات vmailMAILMAN_HOST عنوان IP الذي يرتبط به ساعي البريد. الافتراضي هو 0.0.0.0MAILMAN_PORT الذي يرتبط به ساعي البريد بمنفذ TCP. الافتراضي هو 4000MAILMAN_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=/mailmanmailman/.env وقم بتغيير MAILMAN_BASENAME=/ إلى MAILMAN_BASENAME=/mailmannpm install && cd client && npm install && cd - && npm run buildpm2 إذا كان يعمل بالفعل مع pm2 killnpm 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 buildnpm start يجب أن يعمل Mailman الآن على المنفذ 4000 للخادم.
قم بتشغيل الأمر التالي داخل دليل mailman
git stash && git pull && npm install && cd client && npm install && cd - && npm run build && pm2 restart alldocker 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