Как настроить sendmail для отправки писем из PHP скриптов

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
rusych
проходил мимо
Сообщения: 2
Зарегистрирован: 2008-11-14 23:32:13

Как настроить sendmail для отправки писем из PHP скриптов

Непрочитанное сообщение rusych » 2008-11-14 23:38:00

Система
uname -a
FreeBSD host1.mydomain.com 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008 root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386

На сервере хостятся несколько сайтов, на которых должна быть реализована отправка писем при регистрации, для активации акаунта.

В php.ini для этого роз комментировано
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

В качестве SMTP используется sendmail

ps -aux|grep sendmail
root 824 0,0 0,3 5848 3544 ?? Ss 18:02 0:00,28 sendmail: accepting connections (sendmail)
smmsp 828 0,0 0,3 5848 3316 ?? Is 18:02 0:00,01 sendmail: Queue runner@00:30:00 for /var/spool/clientmqueue (sendmail)

А проблема такая, при отправке письма sendmail, в поле отправитель подставляет hostname сервера — www@host1.mydomain.com, соответственно,письмо уходит. Но не всегда, некоторые сервера не принимают письма, вот что пишет maillog

Nov 14 18:09:21 leader sendmail[988]: mAEG9Lev000988: from=www, size=1320, class=0, nrcpts=1, msgid=<200811141609.mAEG9Lev000988@host1.domain.com>, relay=www@localhost
Nov 14 18:09:21 leader sm-mta[989]: mAEG9L7x000989: <user@domain.com>... User unknown
Nov 14 18:09:21 leader sendmail[988]: mAEG9Lev000988: to=user@domain.com, ctladdr=www (80/80), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31320, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.1, stat=User unknown
Nov 14 18:09:21 leader sm-mta[989]: mAEG9L7x000989: from=<www@host1.mydomain.com>, size=1320, class=0, nrcpts=0, proto=ESMTP, daemon=Daemon0, relay=localhost [127.0.0.1]
Nov 14 18:09:21 leader sendmail[988]: mAEG9Lev000988: mAEG9Lew000988: DSN: User unknown
Nov 14 18:09:21 leader sm-mta[989]: mAEG9L81000989: from=<>, size=3461, class=0, nrcpts=1, msgid=<200811141609.mAEG9Lew000988@host1.domain.com>, bodytype=8BITMIME, proto=ESMTP, daemon=Daemon0, relay=localhost [127.0.0.1]
Nov 14 18:09:21 leader sendmail[988]: mAEG9Lew000988: to=www, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32344, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (mAEG9L81000989 Message accepted for delivery)
Nov 14 18:09:21 leader sm-mta[990]: mAEG9L81000989: to=<www@host1.mydomain.com>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=33654, relay=local, dsn=2.0.0, stat=Sent
Nov 14 18:09:21 leader sendmail[993]: mAEG9L3W000993: from=www, size=1304, class=0, nrcpts=1, msgid=<200811141609.mAEG9L3W000993@host1.mydomain.com>, relay=www@localhost

Команда sendmail -d0.1 -bv root выводит-
Version 8.14.2
Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SCANF
STARTTLS TCPWRAPPERS USERDB XDEBUG
============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = host1
(canonical domain name) $j = host1.mydomain.com
(subdomain name) $m = mydomain.com
(node name) $k = host1.mydomain.com
========================================================

В файле sendmail.cf исправил следующее

# my official domain name
# ... define this only if sendmail cannot automatically determine your domain
Djmydomain.com #Dj$w.Foo.COM
Dmcom
Dkmydomain.com
Dwdomain

Теперь (sendmail -d0.1 -bv root) показивает
Version 8.14.2
Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SCANF
STARTTLS TCPWRAPPERS USERDB XDEBUG
============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = domain
(canonical domain name) $j = mydomain.com
(subdomain name) $m = com
(node name) $k = mydomain.com

Но ситуация не изменилась, SENDMAIL все равно в адрес отправителя ставит host1.mydomain.com, а не mydomain.com.
Собственно вопрос, как исправить ситуацию. В нете нашел информацию, что также можно через маскарадинг.
З.Ы. Прошу прощения, если что, FreeBSD занимаюсь не так долго и хостинг сервера не настраивал еще.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/