Cách định cấu hình tên miền thực cho địa chỉ người gửi


10

Tôi đã cố gắng gửi một email bằng mail()chức năng php nhưng không thành công bằng cách nào đó, phàn nàn rằng cần phải có một tên miền thực. Sau đây được quan sát trong maillog:

sendmail 4984 r25984: từ = apache, size = 273, class = 0, nrcpts = 1, msgid = <201.r25@localhost.localdomain>, rơle = apache @ localhost
sendmail 4985 r25985: ruleset = check_mail, arg1 =, rơle = mydomain.com [127.0.0.1], từ chối = 553 5.5.4 ... Tên miền thực cần thiết cho địa chỉ người gửi
sendmail 4984 r25984: to=external@server.com, ctladdr = apache (48/48), delay = 00: 00:01, xdelay = 00: 00: 00, mailer = rơle, pr = 30273, rơle = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = Lỗi định dạng dữ liệu
sendmail 4984 r25984: r25984: DSN: Lỗi định dạng dữ liệu

cron có thể gửi email đến bên ngoài@server.com bất cứ khi nào có vấn đề với logrotate. Tôi không chắc tại sao php không thể làm như vậy. Tôi đã thử thay đổi cấu hình mặc định trong `sendmail.mc bằng cách sau:

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

Nhưng, nó dường như không có tác dụng. Tiêu đề từ địa chỉ trong chức năng thư php đã được đặt. Tôi cũng đã đảm bảo rằng SELinux httpd_can_sendmailđược kích hoạt. Tôi cần làm gì khác để nhận được thư được gửi?


Bạn đã chỉnh sửa sendmail.mc, thay đổi các dòng localhost.localdomainlocalhostthành một cái gì đó có ý nghĩa và biên dịch tệp mc thành sendmail.cf?
fboaventura

@fboaventura, không, tôi đã bỏ sót hai dòng bằng cách xóa dnltrước mặt chúng.
Câu hỏi tràn vào

Bạn có thể thêm phần có liên quan của tập lệnh php của bạn, nơi bạn đang gọi mail()không? Và, sendmail.mckhông phải là tệp cấu hình phù hợp, tệp này phải được biên dịch thành sendmail.cfsử dụng m4.
fboaventura

@fboaventura, cảm ơn, tôi biết rằng liên quan đến yêu cầu biên dịch, tôi có thể làm cho nó hoạt động ngay bây giờ. Xem câu trả lời của tôi dưới đây. Cảm ơn sự giúp đỡ của bạn :)
Câu hỏi tràn vào

Câu trả lời:


10

Tôi nghĩ rằng tôi vừa giải quyết nó. Tôi có các mục sau / etc / hosts :

127.0.0.1 www.mydomain.com test.mydomain.com
127.0.0.1 cdn.mycdn.com
127.0.0.1 localhost.localdomain localhost myserver.com

Những gì tôi cần là đặt myserver.com trước dòng localhost.localdomainđể sendmail sẽ nghĩ rằng nó đang sử dụng một tên miền thực để gửi email.


3
Bạn chắc chắn có thể chấp nhận câu trả lời của riêng bạn đó là giải pháp ... Với tư cách là một sidenote, nó thường là /etc/hosts(với một "s"), ngoài ra: câu trả lời tốt!
Levite

2

Bạn phải cấu hình, trong các tập lệnh của bạn, các tiêu đề của email của bạn phải có From: sender@domain.com.


Xin lỗi, tôi nên đề cập rằng điều này đã được đặt trong các tiêu đề.
Câu hỏi tràn vào

1

Trong sendmail.mcphần thêm của bạn :

LOCAL_CONFIG
Djmyserver.com

Biên dịch lại sendmail.cf, khởi động lại sendmail và bạn sẽ ổn


1

Trong trường hợp của tôi, trên Ubuntu 16.04 trên một phiên bản AWS, điều cần thiết là thêm vào /etc/mail/sendmail.mc:

define(`confDOMAIN_NAME', `mydomainname.com')dnl

trên một dòng trước MAILER_DEFINITIONSdòng về cuối tập tin, VÀ thêm cùng một dòng vào cuối /etc/mail/submit.mc. Sau đó nhập sudo suquyền truy cập gốc và biên dịch để cấu hình với:

m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf

... Rồi exitsudo. Cuối cùng, sudo service sendmail restartđể khởi động lại sendmail, và từ đó các email đã xuất hiện dưới dạng gửi từ tên miền. Không có lệnh FEATURE hoặc MASQUERADE nào khác được yêu cầu, cũng không phải là một mục trong /etc/hoststệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.