Mailman เป็น SPA ที่เขียนด้วย React เพื่อช่วยคุณจัดการฐานข้อมูลเซิร์ฟเวอร์อีเมลของคุณ

คุณต้องมีเมลเซิร์ฟเวอร์ที่ใช้งานได้พร้อมโมเดลฐานข้อมูลที่ Thomas Leister มอบให้ในบทช่วยสอนเมลเซิร์ฟเวอร์ที่ยอดเยี่ยมของเขา: 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 จากนั้นเริ่มบุรุษไปรษณีย์:
docker run -d --net= " host " --env-file .env --restart=always --name mailman phiilu/mailmanคำอธิบาย:
-d รันคอนเทนเนอร์เป็นกระบวนการ daemon หรือที่เรียกว่าอยู่เบื้องหลัง--net="host" สั่งให้นักเทียบท่าแชร์เครือข่ายกับโฮสต์ สิ่งนี้จำเป็นสำหรับการเข้าถึงฐานข้อมูล vmail--env-file .env ตั้งค่าตัวแปรสภาพแวดล้อมในคอนเทนเนอร์--name mailman ตั้งชื่อให้กับคอนเทนเนอร์นักเทียบท่าเป็นบุรุษไปรษณีย์นักเทียบท่าพร้อมการกำหนดค่าโฟลเดอร์ย่อย:
หากคุณต้องการเข้าถึงบุรุษไปรษณีย์ผ่านโฟลเดอร์ย่อย /mailman แทนที่จะเป็น http root / คุณต้องแก้ไขสิ่งต่อไปนี้:
ดาวน์โหลดไฟล์ sample.subfolder.env
wget https://github.com/phiilu/mailman/raw/master/sample.subfolder.env -O .env อัปเดตตัวแปรใน .env จากนั้นเริ่มบุรุษไปรษณีย์ด้วยแท็ก :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 เครื่องยนต์ที่บุรุษไปรษณีย์ใช้ ตั้งค่าเริ่มต้นเป็น maria หากไม่มีการระบุค่า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 แทนที่จะเป็น 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 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 buildnpm start ขณะนี้ Mailman ควรทำงานบนพอร์ต 4000 ของเซิร์ฟเวอร์
รันคำสั่งต่อไปนี้ภายในไดเร็กทอรีบุรุษไปรษณีย์
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 โปรดดูที่ Thomas's Guide:
Wie kann ich mit diesem Setup Catch-All Adressen realisieren? (เยอรมัน)
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT