package main import ( "bufio" "io" "strings" ) // parseQuotas reads a docker-mailserver dovecot-quotas.cf file: one // "user@domain:quota=" per line (see DMS docs). Returns per-user // quota limits as raw strings. An absent or empty file means no limits. func parseQuotas(r io.Reader) (map[string]string, error) { quotas := make(map[string]string) sc := bufio.NewScanner(r) for sc.Scan() { line := strings.TrimSpace(sc.Text()) if line == "" || strings.HasPrefix(line, "#") { continue } email, kv, ok := strings.Cut(line, ":") email = strings.TrimSpace(email) if !ok || email == "" { continue } if _, quota, found := strings.Cut(kv, "="); found { quotas[email] = strings.TrimSpace(quota) } } return quotas, sc.Err() }