Система
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 занимаюсь не так долго и хостинг сервера не настраивал еще.