12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package main
- import (
- "log"
- sasl "git.semlanik.org/semlanik/gostfix/sasl"
- scanner "git.semlanik.org/semlanik/gostfix/scanner"
- web "git.semlanik.org/semlanik/gostfix/web"
- profile "github.com/pkg/profile"
- )
- type GofixEngine struct {
- scanner *scanner.MailScanner
- web *web.Server
- sasl *sasl.SaslServer
- }
- func NewGofixEngine() (e *GofixEngine) {
- mailScanner := scanner.NewMailScanner()
- saslService, err := sasl.NewSaslServer()
- if err != nil {
- log.Fatalf("Unable to intialize sasl server %s\n", err)
- }
- e = &GofixEngine{
- scanner: mailScanner,
- web: web.NewServer(mailScanner),
- sasl: saslService,
- }
- e.scanner.RegisterNotifier(e.web.Notifier)
- return
- }
- func (e *GofixEngine) Run() {
- defer e.scanner.Stop()
- e.sasl.Run()
- e.scanner.Run()
- e.web.Run()
- }
- func main() {
- defer profile.Start().Stop()
- engine := NewGofixEngine()
- engine.Run()
- }
|