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 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
เครื่องยนต์ที่บุรุษไปรษณีย์ใช้ ตั้งค่าเริ่มต้นเป็น maria หากไม่มีการระบุค่า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
แทนที่จะเป็น 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
ของเซิร์ฟเวอร์
รันคำสั่งต่อไปนี้ภายในไดเร็กทอรีบุรุษไปรษณีย์
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 โปรดดูที่ Thomas's Guide:
Wie kann ich mit diesem Setup Catch-All Adressen realisieren? (เยอรมัน)
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT