queue

package
v0.0.0-...-269b0f3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2023 License: MIT Imports: 21 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Directory              string `json:"directory"`
	DisableSSLVerification bool   `json:"disable-ssl-verification"`

	// Map domain names to DKIM config for that domain
	DKIMConfigs map[string]DKIMConfig `json:"dkim-configs"`
}

Application configuration.

type DKIMConfig

type DKIMConfig struct {
	PrivateKey       string `json:"private-key"`
	Selector         string `json:"selector"`
	Canonicalization string `json:"canonicalization"`
}

See https://github.com/Freeaqingme/dkim

type Host

type Host struct {
	// contains filtered or unexported fields
}

Persistent connection to an SMTP host.

func NewHost

func NewHost(host string, s *Storage, c *Config) *Host

Create a new host connection.

func (*Host) Deliver

func (h *Host) Deliver(m *Message)

Attempt to deliver a message to the host.

func (*Host) Idle

func (h *Host) Idle() time.Duration

Retrieve the connection idle time.

func (*Host) Status

func (h *Host) Status() *HostStatus

Return the status of the host connection.

func (*Host) Stop

func (h *Host) Stop()

Close the connection to the host.

type HostStatus

type HostStatus struct {
	Active bool `json:"active"`
	Length int  `json:"length"`
}

Host status information.

type Message

type Message struct {
	Host string
	From string
	To   []string
	// contains filtered or unexported fields
}

Message metadata.

type Queue

type Queue struct {
	Storage *Storage
	// contains filtered or unexported fields
}

Mail queue managing the sending of messages to hosts.

func NewQueue

func NewQueue(c *Config) (*Queue, error)

Create a new message queue. Any undelivered messages on disk will be added to the appropriate queue.

func (*Queue) Deliver

func (q *Queue) Deliver(m *Message)

Deliver the specified message to the appropriate host queue.

func (*Queue) Status

func (q *Queue) Status() *QueueStatus

Provide the status of each host queue.

func (*Queue) Stop

func (q *Queue) Stop()

Stop all active host queues.

type QueueStatus

type QueueStatus struct {
	Uptime int                    `json:"uptime"`
	Hosts  map[string]*HostStatus `json:"hosts"`
}

Queue status information.

type Storage

type Storage struct {
	// contains filtered or unexported fields
}

Manager for message metadata and body on disk. All methods are safe to call from multiple goroutines.

func NewStorage

func NewStorage(directory string) *Storage

Create a Storage instance for the specified directory.

func (*Storage) DeleteMessage

func (s *Storage) DeleteMessage(m *Message) error

Delete the specified message. The message body is also deleted if no more messages exist.

func (*Storage) GetMessageBody

func (s *Storage) GetMessageBody(m *Message) (io.ReadCloser, error)

Retreive a reader for the message body.

func (*Storage) LoadMessages

func (s *Storage) LoadMessages() ([]*Message, error)

Load messages from the storage directory. Any messages that could not be loaded are ignored.

func (*Storage) NewBody

func (s *Storage) NewBody() (io.WriteCloser, string, error)

Create a new message body. The writer must be closed after writing the message body.

func (*Storage) SaveMessage

func (s *Storage) SaveMessage(m *Message, body string) error

Save the specified message to disk.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL