Я разрабатываю на своей машине ubuntu 9.10 для Интернета (php).
Я использую его sendmail для отправки писем, и при разработке на моей локальной машине я отправляю локальные письма (своему пользователю doron).
Еще несколько дней назад я мог отправлять письма как из функции php mail (), так и из командной строки с помощью команды mail.
Я использую sendmail с mailutils.
С последних дней вроде перестало работать.
Когда я пытаюсь отправить почту из командной строки, я получаю следующее в моем системном журнале (и mail.info, и mail.log):
Mar 3 13:27:58 doron-desktop sendmail[4693]: o23BRwlA004693: from=doron, size=84, class=0, nrcpts=1, msgid=<201003031127.o23BRwlA004693@doron-desktop.>, relay=doron@localhost
Mar 3 13:27:58 doron-desktop sm-mta[4694]: o23BRwtQ004694: ruleset=check_rcpt, arg1=<doron@doron-desktop>, relay=localhost [127.0.0.1], reject=553 5.1.8 <doron@doron-desktop>... Domain of sender address doron@doron-desktop does not exist
Mar 3 13:27:58 doron-desktop sendmail[4693]: o23BRwlA004693: to=<doron@doron-desktop>, ctladdr=doron (1000/1000), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30084, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.8, stat=User unknown
Mar 3 13:27:58 doron-desktop sm-mta[4694]: o23BRwtQ004694: from=<doron@doron-desktop>, size=84, class=0, nrcpts=0, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Попытка подключиться к порту 25 локально по telnet приводит к следующему (тот же результат для doron @ doron-desktop):
doron@doron-desktop:/var/mail$ telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 doron-desktop. ESMTP Sendmail 8.14.3/8.14.3/Debian-9ubuntu1; Wed, 3 Mar 2010 13:26:06 +0200; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
helo localhost
250 doron-desktop. Hello localhost [127.0.0.1], pleased to meet you
mail from: doron@localhost
250 2.1.0 doron@localhost... Sender ok
rcpt to: root@localhost
553 5.1.8 root@localhost... Domain of sender address doron@doron-desktop does not exist
Однако, если я сделаю то же самое, но использую doron@127.0.0.1 в поле mail from, я получу:
250 2.1.5 root... Recipient ok
Мой файл / etc / hosts:
127.0.0.1 localhost
127.0.1.1 doron-desktop doron-desktop.
(Если у меня нет «doron-desktop.» (С конечной точкой), почтовой команде требуется много времени (около 30 секунд), пока она не ответит, но результаты те же.)
Я считаю, что вам нужно изменить файл hosts на состояние:
127.0.0.1 localhost
127.0.0.1 doron-desktop
Версия 127.0.1.1 была представлена в Ubuntu Edgy. Но некоторые приложения ищут, чтобы имя хоста соответствовало 127.0.1.1. Sendmail - одно из таких приложений. Вы можете оставить 127.0.1.1, если хотите придерживаться нового стандарта, но обязательно добавьте 127.0.0.1 doron-desktop.
Также обратите внимание на следующее в журнале ошибок:
ruleset=check_rcpt
После чего вам сообщают, что ваш домен doron-desktop не существует. Существуют разные файлы, которые позволят вам установить ваше доменное имя. Попробуйте установить доменное имя в следующих областях:
/etc/hosts
/etc/resolv.conf
sendmail conf files
Вам определенно нужно убедить sendmail в том, что у вас есть доменное имя и что это полное доменное имя (хотя это не так). Если у вас есть зарегистрированное доменное имя (в файле hosts):
doron-desktop.somedomain.com
Серверу все равно, что общедоступный DNS не указывает на ваш настольный компьютер. При этом почтовый сервер, на который вы отправляете электронную почту слишком может (или будет) заботиться о том, чтобы ваш настольный сервер отправлял электронную почту от имени любого доменного имени, которое вы указали в файле hosts, и может либо блокировать электронные письма, либо возвращать их, либо вносить их в черный список (если вы просто тестируете, черного списка не будет - вы нужно будет разослать тысячи тестов).
Похоже, что в какой-то момент sendmail теперь проверяет, разрешается ли ваш домен.
В этом случае вы можете заставить песочную почту принимать неразрешимые домены, перестроив sendmail.cf. Это включает в себя обновление sendmail.mc следующим образом:
FEATURE(`accept_unresolvable_domains')dnl
А затем перестройте sendmail с помощью команды make и перезапустите sendmail:
/etc/mail/make
Прежде чем продолжить, убедитесь, что у вас есть резервные копии sendmail.mc и sendmail.cf.