Skip to content

suxinwl/SuMail

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

้€Ÿไฟกไบ‘้‚ฎ Suxin Mail

๐Ÿš€ ไผไธš็บง่‡ชๅปบ้‚ฎไปถ็ณป็ปŸ ยท ๅ‘้€/ๆŽฅๆ”ถ/่ฅ้”€ไธ€็ซ™ๅผ่งฃๅ†ณๆ–นๆกˆ

ไธญๆ–‡ ยท English ยท ้ƒจ็ฝฒๆŒ‡ๅ— ยท ไธ‹่ฝฝ


๐Ÿ’ก ไธบไป€ไนˆ้€‰ๆ‹ฉ้€Ÿไฟกไบ‘้‚ฎ๏ผŸ

็—›็‚น ไผ ็ปŸๆ–นๆกˆ ้€Ÿไฟกไบ‘้‚ฎ
ๆˆๆœฌ ็ฌฌไธ‰ๆ–น EDM ๆŒ‰้‡่ฎก่ดน๏ผŒ้‚ฎไปถ่ถŠๅคš่ถŠ่ดต ไธ€ๆฌก้ƒจ็ฝฒ๏ผŒๆฐธไน…ๅ…่ดน
้š็ง ้‚ฎไปถๅ†…ๅฎน็ป็ฌฌไธ‰ๆ–นๆœๅŠกๅ™จ๏ผŒๅญ˜ๅœจๆณ„้œฒ้ฃŽ้™ฉ ๆ•ฐๆฎ 100% ่‡ชๆœ‰ๆŽŒๆŽง
็ตๆดปๆ€ง API ๅ—้™๏ผŒๆ— ๆณ•ๅฎšๅˆถ ๅผ€ๆบๅฏๆ”น๏ผŒRESTful API ๅ…จๅผ€ๆ”พ
้€่พพ็އ ๅ…ฑไบซ IP ๆ˜“่ขซๆ ‡่ฎฐๅžƒๅœพ ็‹ฌ็ซ‹ IP + DKIM/SPF/DMARC ่‡ชๅŠจ้…็ฝฎ

โœจ ๆ ธๅฟƒ่ƒฝๅŠ›

๐Ÿ“ค ๆ™บ่ƒฝๅ‘ไฟกๅผ•ๆ“Ž

  • ๅŒๆจกๅผๆŠ•้€’: ็›ด่ฟžๅ‘้€ + SMTP ไธญ็ปงๆ™บ่ƒฝๅˆ‡ๆข
  • ้ซ˜้€่พพ็އ: ่‡ชๅŠจ DKIM ็ญพๅ + SPF/DMARC ่ฎฐๅฝ•็”Ÿๆˆ
  • ๅญๅŸŸๅ้š”็ฆป: ่ฅ้”€้‚ฎไปถไธŽไบ‹ๅŠก้‚ฎไปถๅˆ†็ฆป๏ผŒไฟๆŠคไธปๅŸŸไฟก่ช‰
  • ๅผ‚ๆญฅ้˜Ÿๅˆ—: ๅ†…็ฝฎ้ซ˜ๆ€ง่ƒฝ้˜Ÿๅˆ—๏ผŒๆ”ฏๆŒๅคฑ่ดฅ้‡่ฏ•ไธŽๅนถๅ‘ๆŽงๅˆถ
  • ่ฅ้”€ไปปๅŠก: ๆ”ฏๆŒๆš‚ๅœ/ๆขๅคใ€ๅฎžๆ—ถ่ฟ›ๅบฆ่ฟฝ่ธชใ€ๆ‰“ๅผ€็އ็ปŸ่ฎก

๐Ÿ“ฅ ้‚ฎไปถ็ฝ‘ๅ…ณ

  • SMTP ๆ”ถไฟก: ๅ†…็ฝฎ SMTP Server๏ผŒๆŽฅๆ”ถๅŸŸๅ้‚ฎ็ฎฑ้‚ฎไปถ
  • STARTTLS ๅŠ ๅฏ†: ๆ”ฏๆŒ TLS ๅŠ ๅฏ†ไผ ่พ“๏ผŒ้˜ฒ็ชƒๅฌ
  • ๆ™บ่ƒฝ่ฝฌๅ‘: ้€š้…็ฌฆ/ๅ‰็ผ€ๅŒน้…๏ผŒ่‡ชๅŠจ่ฝฌๅ‘่‡ณ Gmail/QQ
  • MIME ่งฃๆž: ่‡ชๅŠจ่งฃ็  Base64/QP๏ผŒๆ”ฏๆŒไธญๆ–‡ๆ— ไนฑ็ 
  • ้™„ไปถๅค„็†: ่‡ชๅŠจๆๅ–ไฟๅญ˜๏ผŒๆ”ฏๆŒๅœจ็บฟ้ข„่งˆ

๐Ÿ›ก๏ธ ๅฎ‰ๅ…จ้˜ฒๆŠค

  • ไธคๆญฅ้ชŒ่ฏ (2FA): TOTP ๅŠจๆ€ๅฃไปค๏ผŒGoogle/Microsoft Authenticator ๅ…ผๅฎน
  • ้€Ÿ็އ้™ๅˆถ: IP ็บง่ฟžๆŽฅ้™ๅˆถ๏ผŒ้˜ฒ DDoS/ๆšดๅŠ›ๆ”ปๅ‡ป
  • IP ้ป‘ๅๅ•: ไธ€้”ฎๅฐ็ฆๆถๆ„ IP
  • JWT ่ฎค่ฏ: ๅฎ‰ๅ…จ Token + API Key ๅŒ้‡้ชŒ่ฏ
  • ๅฏ†็ ๅŠ ๅฏ†: bcrypt ๅ“ˆๅธŒๅญ˜ๅ‚จ
  • HTTPS ๆ”ฏๆŒ: ๅ…จ็ซ™ SSL ๅŠ ๅฏ†
  • ่ฏไนฆ็ฎก็†: Let's Encrypt ่‡ชๅŠจ็”ณ่ฏท/็ปญๆœŸ๏ผŒๆ”ฏๆŒๆ‰‹ๅŠจไธŠไผ 
  • ่‡ชๅŠจๅค‡ไปฝ: ๆ›ดๆ–ฐๅ‰่‡ชๅŠจๅค‡ไปฝ๏ผŒๆ”ฏๆŒไธ€้”ฎๅ›žๆปš

๐Ÿ”ง ๅผ€ๅ‘่€…ๅ‹ๅฅฝ

  • RESTful API: ๆ ‡ๅ‡†ๆŽฅๅฃ๏ผŒๆ”ฏๆŒ Bearer Token
  • ๆฐธไน…ๅฏ†้’ฅ: your_api_key_here ๆ ผๅผ๏ผŒ้›†ๆˆๆ–นไพฟ
  • ๆจกๆฟๅผ•ๆ“Ž: {{.name}} ๅ˜้‡ๆ›ฟๆข๏ผŒๅƒไบบๅƒ้ข
  • Webhook ๅ›ž่ฐƒ: ๅ‘้€็Šถๆ€ๅฎžๆ—ถๆŽจ้€
  • ไบคไบ’ๅผๆ–‡ๆกฃ: ๅ†…็ฝฎ API ๆ–‡ๆกฃ + AI ๆ็คบ่ฏ
  • ๅœจ็บฟๆ›ดๆ–ฐ: ไธ€้”ฎๆฃ€ๆŸฅ/ไธ‹่ฝฝ/ๅฎ‰่ฃ…ๆ–ฐ็‰ˆๆœฌ
  • ็ƒญ้‡ๅฏ: ๆ›ดๆ–ฐๅŽ่‡ชๅŠจ้‡ๅฏ๏ผŒๆ— ้œ€ไบบๅทฅๅนฒ้ข„

๐Ÿ–ผ๏ธ ็ณป็ปŸ้ข„่งˆ

ไปช่กจ็›˜
่ฅ้”€ไปปๅŠก
่”็ณปไบบ็ฎก็†
้‚ฎไปถๆจกๆฟ
ๅŸŸๅ้…็ฝฎ
ๆ”ถไปถ็ฎฑ
๐Ÿ“ธ ๆŸฅ็œ‹ๆ›ดๅคšๆˆชๅ›พ
ๅ‘้€้€š้“ ๅฏ†้’ฅ็ฎก็†
SMTP Keys
ๅ‘้€ๆ—ฅๅฟ— ็ณป็ปŸ่ฎพ็ฝฎ
Logs Settings

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

1๏ธโƒฃ ไธ‹่ฝฝ่ฟ่กŒ

# ไปŽ Releases ไธ‹่ฝฝๅฏนๅบ”ๅนณๅฐไบŒ่ฟ›ๅˆถๆ–‡ไปถ
# https://github.com/1186258278/SuxinMail/releases

# Linux/macOS
chmod +x goemail && ./goemail

# Windows
goemail.exe

2๏ธโƒฃ ่ฎฟ้—ฎๅŽๅฐ

ๆต่งˆๅ™จๆ‰“ๅผ€ http://localhost:9901

้กน็›ฎ ๅ€ผ
้ป˜่ฎค่ดฆๅท admin
้ป˜่ฎคๅฏ†็  123456

โš ๏ธ ้ฆ–ๆฌก็™ปๅฝ•ๅŽ่ฏท็ซ‹ๅณไฟฎๆ”นๅฏ†็ ๏ผŒๅนถๅปบ่ฎฎๅผ€ๅฏไธคๆญฅ้ชŒ่ฏ (2FA)๏ผ

ๅ‘ฝไปค่กŒๅ‚ๆ•ฐ

# ้‡็ฝฎ็ฎก็†ๅ‘˜ๅฏ†็ ไธบ 123456
./goemail -reset

# ้‡็ฝฎ็ฎก็†ๅ‘˜ไธคๆญฅ้ชŒ่ฏ (ๅฟ˜่ฎฐ 2FA ๆ—ถไฝฟ็”จ)
./goemail -reset-totp

3๏ธโƒฃ ๅ‘้€็ฌฌไธ€ๅฐ้‚ฎไปถ

curl -X POST http://localhost:9901/api/v1/send \
  -H "Authorization: Bearer sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "test@example.com",
    "subject": "Hello from Suxin Mail",
    "body": "<h1>ๆฌข่ฟŽไฝฟ็”จ้€Ÿไฟกไบ‘้‚ฎ๏ผ</h1>"
  }'

๐Ÿ“ฆ ๅŠŸ่ƒฝๆธ…ๅ•

ๆจกๅ— ๅŠŸ่ƒฝ ็Šถๆ€
ๅ‘้€ไธญๅฟƒ ๅ•ๅฐ/ๆ‰น้‡ๅ‘้€ใ€้™„ไปถๆ”ฏๆŒใ€HTML ๆจกๆฟ โœ…
่ฅ้”€ไปปๅŠก ๅฎšๆ—ถๅ‘้€ใ€ๆš‚ๅœๆขๅคใ€่ฟ›ๅบฆ่ฟฝ่ธชใ€็ปŸ่ฎกๅˆ†ๆž โœ…
่”็ณปไบบ ๅˆ†็ป„็ฎก็†ใ€ๅฏผๅ…ฅๅฏผๅ‡บใ€้€€่ฎข็ฎก็† โœ…
ๆ”ถไปถ็ฎฑ SMTP ๆ”ถไฟกใ€MIME ่งฃๆžใ€้™„ไปถๆๅ–ใ€ๆ‰น้‡ๆ“ไฝœ โœ…
่ฝฌๅ‘่ง„ๅˆ™ ็ฒพ็กฎ/ๅ‰็ผ€/้€š้…็ฌฆๅŒน้…ใ€ๅคš็›ฎๆ ‡่ฝฌๅ‘ โœ…
ๅŸŸๅ็ฎก็† ๅคšๅŸŸๅๆ”ฏๆŒใ€DKIM ่‡ชๅŠจ็”Ÿๆˆใ€DNS ้ชŒ่ฏ โœ…
ๅ‘้€้€š้“ SMTP ไธญ็ปง้…็ฝฎใ€็›ด่ฟžๅ‘้€ใ€่ดŸ่ฝฝๅ‡่กก โœ…
ๅฎ‰ๅ…จ้˜ฒๆŠค 2FA ไธคๆญฅ้ชŒ่ฏใ€STARTTLSใ€้€Ÿ็އ้™ๅˆถใ€IP ้ป‘ๅๅ• โœ…
่ฏไนฆ็ฎก็† Let's Encrypt ่‡ชๅŠจ็”ณ่ฏทใ€ๆ‰‹ๅŠจไธŠไผ ใ€่‡ชๅŠจ็ปญๆœŸ โœ…
ๆ•ฐๆฎๆธ…็† ่‡ชๅŠจๅฎšๆ—ถๆธ…็†ใ€ไฟ็•™็ญ–็•ฅ้…็ฝฎใ€ๆ‰‹ๅŠจๆธ…็† โœ…
็ณป็ปŸ่ฎพ็ฝฎ HTTPSใ€็ซฏๅฃ้…็ฝฎใ€ๅค‡ไปฝๆขๅค โœ…
API RESTful ๆŽฅๅฃใ€ๆฐธไน…ๅฏ†้’ฅใ€ไบคไบ’ๆ–‡ๆกฃ โœ…

โš™๏ธ ้…็ฝฎ่ฏดๆ˜Ž

๐Ÿ“ config.json ็คบไพ‹
{
  "domain": "mail.example.com",
  "host": "0.0.0.0",
  "port": "9901",
  "base_url": "https://mail.example.com",
  "enable_ssl": false,
  "enable_receiver": true,
  "receiver_port": "25",
  "receiver_tls": true,
  "receiver_rate_limit": 30,
  "receiver_max_msg_size": 10240,
  "cleanup_enabled": true,
  "cleanup_email_log_days": 30,
  "cleanup_inbox_days": 30
}
๐Ÿ” DNS ่ฎฐๅฝ•้…็ฝฎ
# MX ่ฎฐๅฝ• (ๆ”ถไปถ)
@    MX    10    mail.example.com.

# SPF ่ฎฐๅฝ• (ๅ‘ไปถ้ชŒ่ฏ)
@    TXT   "v=spf1 ip4:YOUR_SERVER_IP ~all"

# DKIM ่ฎฐๅฝ• (็ญพๅ้ชŒ่ฏ)
default._domainkey    TXT    "v=DKIM1; k=rsa; p=YOUR_PUBLIC_KEY"

# DMARC ่ฎฐๅฝ• (็ญ–็•ฅ)
_dmarc    TXT    "v=DMARC1; p=quarantine; rua=mailto:admin@example.com"

๐Ÿ—๏ธ ๆŠ€ๆœฏๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      ้€Ÿไฟกไบ‘้‚ฎ ๆžถๆž„ๅ›พ                          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Web UI โ”‚    โ”‚   API   โ”‚    โ”‚  SMTP   โ”‚    โ”‚  Queue  โ”‚  โ”‚
โ”‚  โ”‚ (HTML5) โ”‚    โ”‚  (Gin)  โ”‚    โ”‚ Server  โ”‚    โ”‚ Worker  โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚       โ”‚              โ”‚              โ”‚              โ”‚        โ”‚
โ”‚       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜        โ”‚
โ”‚                          โ”‚                                   โ”‚
โ”‚                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”                            โ”‚
โ”‚                    โ”‚   GORM    โ”‚                            โ”‚
โ”‚                    โ”‚  SQLite   โ”‚                            โ”‚
โ”‚                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
ๅฑ‚็บง ๆŠ€ๆœฏ้€‰ๅž‹
ๅŽ็ซฏ Go 1.21+ ยท Gin ยท GORM ยท SQLite
ๅ‰็ซฏ HTML5 ยท TailwindCSS ยท Chart.js
้‚ฎไปถ go-mail ยท go-msgauth (DKIM) ยท STARTTLS
ๅฎ‰ๅ…จ bcrypt ยท JWT ยท TOTP (2FA) ยท Rate Limiter
่ฏไนฆ ACME ยท Let's Encrypt ยท lego

๐Ÿค ๅ‚ไธŽ่ดก็Œฎ

ๆฌข่ฟŽๆไบค Issue ๅ’Œ Pull Request๏ผ

  1. Fork ๆœฌไป“ๅบ“
  2. ๅˆ›ๅปบ็‰นๆ€งๅˆ†ๆ”ฏ: git checkout -b feature/amazing-feature
  3. ๆไบคๆ›ดๆ”น: git commit -m 'feat: add amazing feature'
  4. ๆŽจ้€ๅˆ†ๆ”ฏ: git push origin feature/amazing-feature
  5. ๆไบค PR

่ฏฆ่ง ่ดก็ŒฎๆŒ‡ๅ—


๐Ÿ“„ ๅผ€ๆบๅ่ฎฎ

ๆœฌ้กน็›ฎ้‡‡็”จ MIT License ่ฎธๅฏ่ฏ๏ผŒๅฏๅ…่ดนๅ•†็”จใ€‚


ยฉ 2026 ๆทฑๅœณๅธ‚้€Ÿไฟก็ฝ‘็ปœ็ง‘ๆŠ€ๆœ‰้™ๅ…ฌๅธ
ๅฎ˜็ฝ‘ ยท ๆ–‡ๆกฃ

ๅฆ‚ๆžœ่ฟ™ไธช้กน็›ฎๅฏนๆ‚จๆœ‰ๅธฎๅŠฉ๏ผŒ่ฏท็ป™ไธ€ไธช โญ Star ๆ”ฏๆŒไธ€ไธ‹๏ผ

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors