postfix отправляет почту с неверного домена / код Python 3 для отправки почты utf8

960
daveagp

У меня есть машина с двумя доменными именами, скажем, 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 передается вместе. Если какая-то дополнительная информация может помочь, я буду рад ее доставить!

0
Я также обнаружил, что это аналогичная проблема, но мне не ответили: http://serverfault.com/questions/144986/postfix-uses-hostname-instead-of-myhostname daveagp 11 лет назад 0

1 ответ на вопрос

0
daveagp

Следующий

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()