p_debugger.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package backends
  2. import (
  3. "github.com/flashmob/go-guerrilla/envelope"
  4. )
  5. // ----------------------------------------------------------------------------------
  6. // Processor Name: debugger
  7. // ----------------------------------------------------------------------------------
  8. // Description : Log received emails
  9. // ----------------------------------------------------------------------------------
  10. // Config Options: log_received_mails bool - log if true
  11. // --------------:-------------------------------------------------------------------
  12. // Input : e.MailFrom, e.RcptTo, e.Header
  13. // ----------------------------------------------------------------------------------
  14. // Output : none (only output to the log if enabled)
  15. // ----------------------------------------------------------------------------------
  16. func init() {
  17. Processors["debugger"] = func() Decorator {
  18. return Debugger()
  19. }
  20. }
  21. type debuggerConfig struct {
  22. LogReceivedMails bool `json:"log_received_mails"`
  23. }
  24. func Debugger() Decorator {
  25. var config *debuggerConfig
  26. initFunc := Initialize(func(backendConfig BackendConfig) error {
  27. configType := baseConfig(&debuggerConfig{})
  28. bcfg, err := Service.extractConfig(backendConfig, configType)
  29. if err != nil {
  30. return err
  31. }
  32. config = bcfg.(*debuggerConfig)
  33. return nil
  34. })
  35. Service.AddInitializer(initFunc)
  36. return func(c Processor) Processor {
  37. return ProcessorFunc(func(e *envelope.Envelope) (BackendResult, error) {
  38. if config.LogReceivedMails {
  39. Log().Infof("Mail from: %s / to: %v", e.MailFrom.String(), e.RcptTo)
  40. Log().Info("Headers are:", e.Header)
  41. }
  42. // continue to the next Processor in the decorator chain
  43. return c.Process(e)
  44. })
  45. }
  46. }