trashmail
Solution - รับอีเมลผ่าน Web UI
, JSON API
, RSS feed
และ Webhook
RSS feed
สำหรับที่อยู่อีเมลทุกแห่งJSON API
สำหรับการรวมเข้ากับโครงการของคุณเอง สามารถใช้เพื่อส่งอีเมล 2FA อัตโนมัติWebhook
สำหรับการรวมเข้ากับโครงการของคุณเองPlaintext
, STARTTLS
และ TLS on connect
จุดสิ้นสุด | คำอธิบาย | ตัวอย่างเอาต์พุต |
---|---|---|
/ RSS/ [email-address] | แสดงผล RSS XML สำหรับไคลเอนต์ RSS เพื่อแสดงผลอีเมล | |
/API/RAW/ [email-address]/[id] | ส่งคืนอีเมลดิบของที่อยู่ คำเตือน: เอาท์พุทอาจมีขนาดใหญ่เท่ากับอีเมลเองดังนั้นอาจสูงถึง 20MB สำหรับอีเมลที่มีไฟล์แนบขนาดใหญ่ | |
/API/ATTACHMENT [email-address]/[attachment-id] | ส่งคืนไฟล์แนบด้วยประเภท MIME ที่ถูกต้องเป็นส่วนหัว | |
/API/DELETE/ [email-address]/[id] | ลบข้อความอีเมลเฉพาะและไฟล์แนบของพวกเขา | |
/api/deleteAccount/ [email-address] | ลบข้อความและไฟล์แนบทั้งหมดของบัญชีอีเมลนี้ |
จุดสิ้นสุด | คำอธิบาย | ตัวอย่างเอาต์พุต |
---|---|---|
/ JSON/ [email-address] | ส่งคืนอาร์เรย์ของอีเมลที่ได้รับพร้อมลิงก์ไปยังไฟล์แนบและเนื้อหาที่แยกวิเคราะห์ข้อความของอีเมล หากป้อนอีเมล ADMIN จะส่งคืนอีเมลทั้งหมดของบัญชีทั้งหมด | |
/JSON/ [email-address]/[id] | หากต้องการดูข้อมูลทั้งหมดของอีเมลที่ได้รับให้ใช้ ID จากการโทรก่อนหน้านี้และสำรวจสิ่งนี้เพื่อรับเนื้อหา RAW และ HTML ของอีเมล อาจมีขนาดใหญ่มากเนื่องจากร่างกายสามารถมีสิ่งที่แนบมาทั้งหมดใน base64 | |
/json/listaccounts | หาก SHOW_ACCOUNT_LIST ถูกตั้งค่าเป็นจริงใน config.ini จุดสิ้นสุดนี้จะส่งคืนอาร์เรย์ของที่อยู่อีเมลทั้งหมดที่ได้รับอีเมลอย่างน้อยหนึ่งฉบับ |
เพียงแก้ไข config.ini
คุณสามารถใช้การตั้งค่าต่อไปนี้
URL
-> URL ที่จะโฮสต์ GUI ไม่มี Slash หาง! ตัวอย่าง: https://trashmail.mydomain.euDOMAINS
-> รายการที่คั่นด้วยเครื่องหมายจุลภาคของโดเมนเซิร์ฟเวอร์อีเมลนี้จะได้รับอีเมล มันเป็นเพียงเพื่อให้เว็บอินเตอร์เฟสสามารถสร้างที่อยู่สุ่มMAILPORT
-> พอร์ตเซิร์ฟเวอร์ SMTP ที่ขับเคลื่อนด้วย Python จะฟัง Default: 25
ADMIN
-> ที่อยู่อีเมล (ไม่จำเป็นต้องมีอยู่เพียงแค่ถูกต้อง) ที่จะแสดงรายการอีเมลทั้งหมดของที่อยู่ทั้งหมดที่เซิร์ฟเวอร์ได้รับ ชนิดของการจับทั้งหมดDATEFORMAT
-> การประทับเวลาควรแสดงบนเว็บอินเตอร์เฟสอย่างไร (moment.js ไวยากรณ์)PASSWORD
-> หากกำหนดค่าเว็บไซต์และ API ไม่สามารถใช้งานได้โดยไม่ต้องให้ผ่านแบบฟอร์มโพสต์/รับ password
ตัวแปรหรือส่วนหัว HTTP PWD
(เช่น: curl -H "PWD: 123456" http://localhost:8080/json...
)ALLOWED_IPS
-> รายการคั่นด้วยเครื่องหมายจุลภาคของที่อยู่ IPv4 หรือ IPv6 CIDR ที่ได้รับอนุญาตให้ใช้ Web UI หรือ APIATTACHMENTS_MAX_SIZE
-> ขนาดสูงสุดสำหรับแต่ละไฟล์แนบของอีเมลในไบต์MAILPORT_TLS
-> หากตั้งค่าเป็นสิ่งที่สูงกว่า 0 พอร์ตนี้จะใช้สำหรับ TLSC (TLS on Connect) ซึ่งหมายถึงการรับรองความถูกต้องแบบธรรมดาจะไม่สามารถทำได้ มักจะตั้งค่าเป็น 465
ต้องการ TLS_CERTIFICATE
และ TLS_PRIVATE_KEY
เพื่อทำงานTLS_CERTIFICATE
-> เส้นทางไปยังใบรับรอง (โซ่) สามารถสัมพันธ์กับไดเรกทอรี /python หรือสัมบูรณ์TLS_PRIVATE_KEY
-> เส้นทางไปยังคีย์ส่วนตัวของใบรับรอง สามารถสัมพันธ์กับไดเรกทอรี /python หรือสัมบูรณ์WEBHOOK_URL
-> หากตั้งค่าจะส่งคำขอโพสต์ไปยัง URL นี้ด้วยข้อมูล JSON ของอีเมลเป็นร่างกาย สามารถใช้ในการรวม opentrashmail ในโครงการของคุณเองADMIN_ENABLED
-> เปิดใช้งานเมนูผู้ดูแลระบบ ค่าเริ่มต้น false
ADMIN_PASSWORD
-> หากตั้งค่าต้องการรหัสผ่านนี้เพื่อเข้าถึงเมนูผู้ดูแลระบบ ใน Docker คุณสามารถใช้ตัวแปรสภาพแวดล้อมต่อไปนี้:
env var | มันทำอะไร | ค่าตัวอย่าง |
---|---|---|
url | URL ของเว็บอินเตอร์เฟส ใช้โดยฟีด API และ RSS | http: // localhost: 8080 |
discard_unknown | บอกให้ MailServer ไม่หรือไม่ลบอีเมลที่ส่งถึงโดเมนที่ไม่ได้กำหนดค่า | จริงเท็จ |
โดเมน | โดเมน Whitelisted ที่เซิร์ฟเวอร์จะฟัง หาก Discard_unknown ถูกตั้งค่าเป็น False สิ่งนี้จะถูกใช้เพื่อสร้างอีเมลแบบสุ่มใน webInterface เท่านั้น | |
show_account_list | หากตั้งค่าเป็น true บัญชีทั้งหมดที่ได้รับอีเมลก่อนหน้านี้สามารถแสดงรายการผ่าน API หรือ WebInterface | จริงเท็จ |
ผู้ดูแลระบบ | หากตั้งค่าเป็นที่อยู่อีเมลที่ถูกต้องและที่อยู่นี้จะถูกป้อนใน API หรือ WebInterface จะแสดงอีเมลทั้งหมดของบัญชีทั้งหมด ประเภทจับทั้งหมด | [email protected] |
วันที่ | จะจัดรูปแบบวันที่ที่ได้รับในเว็บอินเตอร์เฟสตาม moment.js ไวยากรณ์ | "อืมทำ yyyy, h: mm: ss a" |
skip_filepermissions | หากตั้งค่าเป็น true จะไม่แก้ไขสิทธิ์ไฟล์สำหรับโฟลเดอร์ข้อมูลรหัสในคอนเทนเนอร์ มีประโยชน์สำหรับ dev ท้องถิ่น ค่าเริ่มต้น false | จริงเท็จ |
รหัสผ่าน | หากกำหนดค่าเว็บไซต์และ API ไม่สามารถใช้งานได้โดยไม่ต้องให้ผ่านแบบฟอร์มโพสต์/รับรหัสผ่าน password หรือส่วนหัว HTTP PWD | yousrstrongpassword |
ได้รับอนุญาต _ips | เครื่องหมายจุลภาคที่แยกจากกันของที่อยู่ IPv4 หรือ IPv6 CIDR ที่ได้รับอนุญาตให้ใช้ Web UI หรือ API | 192.168.5.0/24,2a02:ab:cd:ef::/60,172.16.0.0/16 |
attachments_max_size | ขนาดสูงสุดสำหรับไฟล์แนบแต่ละรายการของอีเมลในไบต์ | 2000000 = 2MB |
mailport_tls | หากตั้งค่าเป็นสิ่งที่สูงกว่า 0 พอร์ตนี้จะใช้สำหรับ TLSC (TLS on Connect) ซึ่งหมายถึงการรับรองความถูกต้องแบบธรรมดาจะไม่สามารถทำได้ มักจะตั้งค่าเป็น 465 ต้องการ TLS_CERTIFICATE และ TLS_PRIVATE_KEY เพื่อทำงาน | 465 |
tls_certificate | เส้นทางไปยังใบรับรอง (โซ่) สามารถสัมพันธ์กับไดเรกทอรี /python หรือสัมบูรณ์ | /certs/cert.pem หรือ cert.pem ถ้ามันอยู่ในไดเรกทอรี Python |
tls_private_key | เส้นทางไปยังคีย์ส่วนตัวของใบรับรอง สามารถสัมพันธ์กับไดเรกทอรี /python หรือสัมบูรณ์ | /certs/privkey.pem หรือ key.pem ถ้ามันอยู่ในไดเรกทอรี Python |
webhook_url | หากตั้งค่าจะส่งคำขอโพสต์ไปยัง URL นี้พร้อมข้อมูล JSON ของอีเมลเป็นร่างกาย สามารถใช้ในการรวม opentrashmail ในโครงการของคุณเอง | https://example.com/webhook |
admin_enabled | เปิดใช้งานเมนูผู้ดูแลระบบ ค่าเริ่มต้น false | false / true |
admin_password | หากตั้งค่าต้องการรหัสผ่านนี้เพื่อเข้าถึงเมนูผู้ดูแลระบบ | 123456 |
เนื่องจาก V1.3.0 TLS และ StartTLs ได้รับการสนับสนุนโดย OpentRashMail
โปรดทราบว่ามีสองวิธีในการใช้ TLS กับอีเมล
startTls ไม่จำเป็นต้องใช้พอร์ตเฉพาะเนื่องจากเริ่มต้นเป็นข้อความธรรมดาแล้วอัพเกรดเป็น TLS หากเซิร์ฟเวอร์โฆษณาคำสั่ง "startTls" (ซึ่ง OpentRashMail ทำโดยอัตโนมัติหากการตั้งค่าใบรับรองและคีย์ได้รับการกำหนดค่า) เนื่องจากมันทำงานบน MAILPORT
เริ่มต้นคุณไม่จำเป็นต้องเปิดพอร์ตอื่นเพื่อให้ทำงานได้
TLS on Connect คือการห่อ TLs รอบพอร์ตที่เปิดเผยดังนั้นจึงเป็นไปไม่ได้ที่จะพูดคุยกับมันในข้อความธรรมดาและดังนั้นจึงต้องใช้พอร์ตที่แตกต่างกันในการทำงาน โดยปกติพอร์ต 465 จะใช้สำหรับสิ่งนี้
เพื่อให้ TLS ทำงานได้ก่อนคุณต้องมีใบรับรองที่สอดคล้องกับชื่อโฮสต์ของเซิร์ฟเวอร์ SMTP สิ่งนี้สามารถทำได้โดยใช้ Lets'Encrypt และยังทำงานร่วมกับใบรับรอง Wildcard
สำหรับสภาพแวดล้อมการทดสอบคุณสามารถสร้างใบรับรองได้โดยเรียกใช้คำสั่งต่อไปนี้จากภายในโฟลเดอร์ Python:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj ' /CN=localhost '
จากนั้นคุณต้องตั้งค่าการตั้งค่าสำหรับ MAILPORT_TLS
(ไม่จำเป็นหากคุณต้องการสนับสนุน starttls), TLS_CERTIFICATE
และ TLS_PRIVATE_KEY
ไฟล์ /docs/dev.md มีคำแนะนำบางประการเกี่ยวกับวิธีการดีบักและทดสอบการเชื่อมต่อ TLS และ TLSC มันใช้เครื่องมือ swaks
ซึ่งควรเป็นไปได้ในทุกแพ็คเกจผู้จัดการแพ็คเกจ
ในแผง DNS ของคุณสร้างระเบียน MX สำหรับโดเมนของคุณชี้ไปที่ IP ของเซิร์ฟเวอร์โฮสติ้ง OpentRashMail
ตัวอย่างต่อไปนี้จะอนุญาตให้คุณส่งอีเมลไปที่ example.com
mail.example.com. IN A 93.184.216.34
example.com. 14400 IN MX 10 mail.example.com.
ตัวอย่างขั้นสูงนี้จะช่วยให้คุณใช้โดเมนไวด์การ์ด:
mail.example.com. IN A 93.184.216.34
*.example.com. 14400 IN MX 10 mail.example.com.
สิ่งนี้ร่วมกับตัวเลือกการกำหนดค่า "โดเมน" (เช่นพารามิเตอร์ Docker -e DOMAINS="*.example.com"
) จะช่วยให้คุณใช้ที่อยู่ใด ๆ ที่มีโดเมนย่อยของ example.com (เช่น [email protected] [email protected] ฯลฯ )
เริ่มต้นง่ายๆโดยไม่มีการคงอยู่
docker run -it -p 25:25 -p 80:80 -e URL= " https://localhost:80 " hascheksolutions/opentrashmail:1
บันทึกไดเรกทอรีข้อมูลบนเครื่องโฮสต์
docker run -p 80:80 -p 25:25 -e URL= " https://localhost:80 " -v /path/on/host/where/to/save/data:/var/www/opentrashmail/data hascheksolutions/opentrashmail:1
ตัวอย่างที่สมบูรณ์ด้วย Running As Daemon, Persistence, โดเมนสำหรับการสร้างอีเมลรุ่นอัตโนมัติ, รับอีเมลเฉพาะสำหรับโดเมนที่กำหนดค่า, การทำความสะอาดสำหรับอีเมลที่เก่ากว่า 90 วันและรีสตาร์ทอัตโนมัติ
docker run -d --restart=unless-stopped --name opentrashmail -e " DOMAINS=mydomain.eu " -e " DATEFORMAT='D.M.YYYY HH:mm' " -e " DISCARD_UNKNOWN=false " -e " DELETE_OLDER_THAN_DAYS=90 " -p 80:80 -p 25:25 -v /path/on/host/where/to/save/data:/var/www/opentrashmail/data hascheksolutions/opentrashmail:1
หัวใจของ Open Trashmail เป็น เซิร์ฟเวอร์ SMTP ที่ขับเคลื่อนด้วย Python ที่ฟังอีเมลขาเข้าและเก็บไว้เป็นไฟล์ JSON เซิร์ฟเวอร์ไม่จำเป็นต้องรู้โดเมนอีเมลที่ถูกต้องมันจะ จับทุกอย่าง ที่ได้รับ คุณจะต้อง เปิดเผยพอร์ต 25 ไปยังเว็บ และตั้ง ค่าระเบียน MX ของโดเมนของคุณที่ชี้ไปที่ที่อยู่ IP ของเครื่องของคุณ