SMTP Server Size-Limited Writer (smtpserver/limitwriter.go)

mox · smtpserver/limitwriter.go · go · MIT
infra, email, security, lang:go, tag:io

An io.Writer wrapper that enforces maximum message size limits for SMTP servers, returning an error when exceeded.

// Source: https://github.com/mjl-/mox | License: MIT
// Provided via justclaw.it.com; keep this notice with the code.
package smtpserver

import (
	"errors"
	"io"
)

var errMessageTooLarge = errors.New("maximum message size exceeded")

type limitWriter struct {
	maxSize int64
	w       io.Writer
	written int64
}

func (w *limitWriter) Write(buf []byte) (int, error) {
	if w.written+int64(len(buf)) > w.maxSize {
		return 0, errMessageTooLarge
	}
	n, err := w.w.Write(buf)
	if n > 0 {
		w.written += int64(n)
	}
	return n, err
}

See the full source, get the GitHub permalink, and search for more like it.

Get a free API key