/samotop

Primary LanguageRustMIT LicenseMIT

samotop

Samotop

Clone from original

An SMTP server and library implemented in Rust.

Inbound mail processing

inbound

@startuml
database "Accounts" 

node "MailboxSystem" {
  [Mailbox]
  database "Mails" 
}

cloud internet {
  [Another Server]
}
cloud user {
  :Bob:
  [MUA]
}
:Bob: -> [MUA]: read mail
:admin: -up-> [Management]
[Management] -right-> Mails: manage accounts
[Management] -left-> Accounts: manage accounts
[MUA] -(0- [Mailbox]:  inbox (IMAP)
[MTA] -left(0- [Guard]: 1. Check RCPT (LMTP)
[MTA] -right(0- [Mailbox]: 2. deliver mail (LMTP)
[Guard] -down-> Accounts: get rules
[Another Server] -(0- MTA: relay (ESMTP)
[Mailbox] -down-> Mails
@enduml

Outbound mail processing

outbound

@startuml
database "Queue" 
database "Accounts" 

[MSA] 
[QM]

cloud internet {
  [Another Server]
}
cloud user {
  :Bob:
  [MUA]
}

:Bob: -> [MUA]: send an e-mail
[MUA] -(0- [MSA]: submission (ESMTP)
[MSA] -down-> Accounts: 1. authenticate
[MSA] -right(0- [QM]: 2. queue (LMTP)
[QM] -down-> Queue
[QM] -up(0- [Another Server]: relay (ESMTP)
@enduml