Я использую golang для отправки электронной почты с exim следующим способом
const sendmail = "/usr/sbin/exim"
func submitMail(m *gomail.Message) (err error) {
cmd := exec.Command(sendmail, "-t")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
pw, err := cmd.StdinPipe()
if err != nil {
return
}
err = cmd.Start()
if err != nil {
return
}
var errs [3]error
_, errs[0] = m.WriteTo(pw)
errs[1] = pw.Close()
errs[2] = cmd.Wait()
for _, err = range errs {
if err != nil {
return
}
}
return
}
Проблема в том, что Exim удаляет Bcc с помощью -t
Если Exim вызывается с опцией -t, чтобы взять адреса получателей из заголовков сообщения, он удаляет любой заголовок Bcc:, который может существовать (после извлечения его адресов), если только сообщение не имеет заголовка To: или Cc:, и в этом случае в сообщении остается заголовок Bcc: без адресов в соответствии с RFC 822. Если -t отсутствует в командной строке, любой существующий заголовок Bcc: не удаляется.
Если exim вызывается для получения сообщения с адресами получателей, указанными в командной строке, и в сообщении нет заголовка Bcc :, To: или Cc:, он обычно добавляет заголовок To:, перечисляя получателей. Известно, что некоторые программы списков рассылки отправляют сообщения таким образом, и в этом случае создание заголовка To: не является тем, что нужно. Если установлена опция always_bcc, Exim добавляет вместо этого пустой заголовок Bcc :.
-t
, почему его просто не убрать? - person rofls   schedule 22.04.2018