Próbowałem wysłać wiadomość e-mail za pomocą mail()
funkcji php, ale jakoś się nie udało, narzekając, że wymagana jest prawdziwa nazwa domeny. W maillogu obserwuje się:
sendmail 4984 r25984: from = apache, rozmiar = 273, klasa = 0, nrcpts = 1, msgid = <[email protected]>, przekaźnik = apache @ localhost
sendmail 4985 r25985: zestaw reguł = check_mail, arg1 =, przekaźnik = mojadomena.com [127.0.0.1], odrzucenie = 553 5.5.4 ... Wymagana jest prawdziwa nazwa domeny dla adresu nadawcy
sendmail 4984 r25984: [email protected], ctladdr = apache (48/48), opóźnienie = 00: 00:01, xdelay = 00: 00: 00, mailer = przekaźnik, pri = 30273, przekaźnik = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = Błąd formatu danych
sendmail 4984 r25984: r25984: DSN: Błąd formatu danych
cron może wysyłać wiadomości e-mail na adres zewnę[email protected], ilekroć wystąpi problem z logrotate. Nie jestem pewien, dlaczego php nie może tego zrobić. Próbowałem wprowadzić zmiany w domyślnej konfiguracji w `sendmail.mc za pomocą:
MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl
Ale to nie wydaje się mieć żadnego efektu. Nagłówek z adresu w funkcji poczty php został już ustawiony. Upewniłem się również, że SELinux httpd_can_sendmail
jest włączony. Co jeszcze muszę zrobić, aby dostarczyć pocztę?
źródło
sendmail.mc
, zmieniłeś linielocalhost.localdomain
ilocalhost
na coś znaczącego i skompilowałeś plik mcsendmail.cf
?dnl
je przed nimi.mail()
? Isendmail.mc
nie jest to właściwy plik konfiguracyjny, ten plik musi zostać skompilowanysendmail.cf
przy użycium4
.Odpowiedzi:
Myślę, że właśnie to rozwiązałem. Mam następujące pliki / etc / hosts :
Potrzebuję umieścić myserver.com przed linią
localhost.localdomain
, aby sendmail pomyślał, że używa prawdziwej domeny do wysłania wiadomości e-mail.źródło
/etc/hosts
(z „s”), inne niż: dobra odpowiedź!Musisz skonfigurować w swoich skryptach nagłówki wiadomości e-mail
From: [email protected]
.źródło
W swoim
sendmail.mc
dodaniu:Ponownie skompiluj
sendmail.cf
, uruchom ponownie sendmaila i powinieneś być OKźródło
W moim przypadku na Ubuntu 16.04 w instancji AWS potrzebne było dodanie
/etc/mail/sendmail.mc
:na linii przed
MAILER_DEFINITIONS
linią na końcu pliku, ORAZ dodaj tę samą linię na końcu/etc/mail/submit.mc
. Następnie wpiszsudo su
uprawnienia roota i skompiluj, aby skonfigurować z:... następnie
exit
sudo. Wreszcie,sudo service sendmail restart
aby ponownie uruchomić sendmail, i od tego momentu wiadomości e-mail pojawiały się jako wysłane z nazwy domeny. Żadne inne polecenie FEATURE ani MASQUERADE nie były wymagane, ani wpis w/etc/hosts
pliku.źródło