У меня есть машина с двумя доменными именами, скажем, a.com и b.com.

Когда я использую postfix для отправки чего-либо с адреса, такого как foo@a.com, он каждый раз заменяет его на foo@b.com. В моем файле main.cf указан только a.com, поэтому я не знаю, откуда взялся b.com.

Вот соответствующая часть почтового журнала... первая строка - начало сообщения, а затем 6-я строка таинственным образом появляется jim@b.com.

mymachine sendmail[28543]: qA3NGbOR028543: from=jim@a.com, size=792, class=0, nrcpts=1, msgid=<...@a.com>, relay=apache@localhost
mymachine postfix/smtpd[28546]: connect from b.com[127.0.0.1]
mymachine postfix/smtpd[28546]: 912F9758031: client=b.com[127.0.0.1]
mymachine postfix/cleanup[28549]: 912F9758031: message-id=<...@a.com>
mymachine sendmail[28543]: qA3NGbOR028543: to=someone@gmail.com, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30792, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as 912F9758031)
mymachine postfix/qmgr[28527]: 912F9758031: from=<jim@b.com>, size=1130, nrcpt=1 (queue active)

Я не уверен, насколько уместно, как я это назвал, но это из какой-то PHP mail(), и я убедился, что флаг -f передается вместе. Если какая-то дополнительная информация может помочь, я буду рад ее доставить!

1 ответ1

0

Следующий

http://mail.python.org/pipermail/mailman-developers/2001-March/008476.html

Я обнаружил, что было проще удалить sendmail, установить postfix и использовать скрипт Python для отправки почты. Вот код Python 3, который я использовал для отправки сообщения (его нужно было интернационализировать, следовательно, кодировки UTF-8).

import email.message, email.mime.text, smtplib, sys
from email.utils import parseaddr, formataddr
from email.header import Header
from email.charset import Charset

def format_address(name, email):
    if not name:
        return email
    name = Charset('iso-8859-1').header_encode(name)
    return formataddr((name, email))

def send_unicode_email(mFrom, mTo, mSubject, mBody):
    sender_name, sender_addr = parseaddr(mFrom)
    recipient_name, recipient_addr = parseaddr(mTo)

    composed = email.mime.text.MIMEText(mBody.encode('UTF-8'), _charset='UTF-8')
    composed['from'] = format_address(sender_name, sender_addr)
    composed['to'] = format_address(recipient_name, recipient_addr)
    composed['subject'] = Header(mSubject, 'UTF-8')

    srv = smtplib.SMTP('localhost')
    srv.send_message(composed)
    srv.quit()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .