Làm cách nào để thay đổi tên chính_hostname của Exim4 trên hộp Debian?


24

Một số máy chủ SMTP từ xa Tôi đang cố gắng gửi thư để từ chối chấp nhận Helo từ máy chủ của mình:

504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname

Rõ ràng, máy chủ Exim4 của tôi gửi localhostdưới dạng FQDN. Tìm kiếm trên mạng và một loạt các tệp cấu hình, tôi đã biết rằng giá trị được gửi dưới dạng FQDN trong khi Helo được rút ra từ primary_hostnamebiến cấu hình.

Câu hỏi của tôi là: cách chính xác để thay đổi biến này trong hệ thống Debian là gì? Tôi đoán đơn giản là tôi có thể mã hóa một giá trị trong các tệp cấu hình Exim4, nhưng IMHO dường như có ý nghĩa hơn nếu giá trị tự động tương ứng với /etc/mailnamehoặc một số cấu hình tên tập trung khác.

Tôi có cảm giác rằng câu trả lời cho câu hỏi của tôi có thể được tìm thấy trong văn bản này từ wiki Debian :

Tên được Exim sử dụng trong EHLO / HELO được lấy từ tùy chọn cấu hình primary_hostname. Cấu hình mặc định exim4 của Debian không được đặt primary_hostname. Exim sau đó mặc định là uname () để tìm tên máy chủ. Nếu cuộc gọi đó chỉ trả về một thành phần, gethostbyname () hoặc getipnodebyname () được sử dụng để có được tên máy chủ đủ điều kiện.

Nếu Exim Helo của bạn là localhost.localdomain, thì rất có thể bạn đã cấu hình sai / etc / hosts được tạo bởi một số phiên bản của trình cài đặt Debian. Trong trường hợp này, vui lòng sửa / etc / hosts của bạn.

Thật không may, tôi không đủ quen thuộc với quản trị máy chủ Linux để biết rõ tất cả những điều này có nghĩa là gì :(

Câu trả lời:


21

Tệp / etc / hosts của bạn nên có ít nhất hai bản ghi trong đó. Bản ghi đầu tiên phải có dạng:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

cái thứ hai nên có dạng:

127.0.0.1 localhost

Bạn cũng cần đảm bảo rằng tệp / etc / hostname chứa FQDN của máy chủ và việc chạy đó hostname -ftrả về FQDN của máy chủ của bạn. Nếu bạn chắc chắn rằng tất cả những điều này là chính xác và khởi động lại Exim, bạn nên bắt đầu nhìn thấy nó đúng cách.


Tôi đã thay đổi / etc / hostname từ tên máy cục bộ thành FQDN. hostname -fvẫn báo cáo "localhost". Phần về / etc / hosts trong câu trả lời của bạn có vẻ có lỗi - bản ghi đầu tiên được cho là trông như thế nào?
Jørn Schou-Rode

1
Mặc dù hostname -fvẫn báo cáo "localhost", nhưng có vẻ như việc thay đổi thành / etc / hostname đã thực hiện thủ thuật - Tôi có thể gửi thư của mình ngay bây giờ. Tôi vẫn muốn xem phần còn thiếu của bài viết của bạn :)
Jørn Schou-Rode

Rất tiếc! Định dạng flub. Đã sửa :-)
Paul Lathrop

1
/etc/hostnamethường không chứa FQDN trên các hệ thống Debian, chỉ có tên máy chủ ngắn.
Josip Rodin

Chà, dòng đầu tiên trong /etc/hostscó thể là 127.0.0.2 mydomain.com myhostname( 127.0.0.2hoạt động tốt như 127.0.0.1, vì loopback là mạng lớp A). Bạn có thể có thể kết hợp hai dòng thành một 127.0.0.1 mydomain.com myhostname localhost, nhưng localhostlà một tên máy chủ hợp quy cho 127.0.0.1, phải không? Tất cả đều cho rằng bạn có tên máy chủ, không phải FQDN làm tên máy chủ của bạn. Ngoài ra, thay đổi /etc/hostnamekhông có hiệu lực ngay lập tức, bạn phải làm hostname myhostname. Hoặc khởi động lại máy chủ.
x-yuri

8

Nếu bạn sử dụng một tệp cấu hình duy nhất, hãy đặt biến PRIMARY_HOST_NAME thành tên mong muốn:

Ví dụ: trong /etc/exim4/exim4.conf:

PRIMARY_HOST_NAME = mybox.mydomain.com

hoặc đặt MAIN_HARDCODE_PRIMARY_HOSTNAMEtrong update-exim4.conf.conf nếu bạn đang sử dụng cấu hình tệp tách.

Để an toàn, hãy khởi động lại exim.


Chỉ cần lưu ý rằng máy chủ được liệt kê không thể nằm trong dấu ngoặc kép, nếu không, exim sẽ gửi HELO 'mybox.mydomain.com'những lần ngắt gửi thư tới Google, có lẽ là những người khác.
mkomarinski

1
Tôi không thể tìm thấy bất kỳ đề cập nào về tên biến "PRIMARY_HOST_NAME" này trong tài liệu. Bạn đã tìm thấy cái này ở đâu?
Josip Rodin

Trên Debian bạn phải chạy update-exim4.confsau khi thay đổi cấu hình. Và khởi động lại thường không cần thiết sau đó.
x-yuri

... Chà, eximnói chung dường như nhận thấy những thay đổi đối với cấu hình mà không cần tải lại. Nhưng nó được cho là an toàn hơn để tải lại, vì tôi cho rằng chính daemon không đọc lại cấu hình cho đến khi tải lại. Sau đó, bạn làm cho âm thanh giống như chỉ /etc/exim4/exim4.confcó thể chứa dòng trên , nhưng thời điểm bạn tạo tệp, /var/lib/exim4/config.autogeneratedbị bỏ qua ...
x-yuri

... "Các quy trình rẽ nhánh Exim bắt đầu để nhận hoặc chạy hàng đợi SMTP sẽ sử dụng tệp cấu hình mới, trong khi exim-daemon chính ban đầu vẫn sẽ sử dụng tệp cấu hình cũ." Vì vậy, đối với tệp cấu hình đơn, tốt nhất nên sử dụng /etc/exim4/exim4.conf.localmacros, để phân tách /etc/exim4/conf.d/main/000_localmacros(các tệp trong mainthư mục được xử lý trước). Và chạy update-exim4.conf+ systemctl reload exim4sau khi thực hiện thay đổi.
x-yuri

4

Tên máy chủ chính được nhắc trong quá trình cài đặt exim4. Bạn có thể chạy lệnh

sudo dpkg-reconfigure exim4-config

để đi qua các gợi ý một lần nữa.

Theo như tôi biết, nếu bạn đã sử dụng 'cấu hình phân tách' (rất nhiều tệp nhỏ trong /etc/exim4/conf.d) và chọn gắn bó với điều đó khi được nhắc, dpkg-cấu hình lại không nên ghi đè bất kỳ các thay đổi cấu hình hiện tại của bạn ngoài các cài đặt mà nó nhắc bạn, nhưng, hơn bao giờ hết, bạn nên sao lưu trước để an toàn.


2
Dường như chỉ yêu cầu "tên thư [mà] phải là tên miền duy nhất, đủ điều kiện (FQDN)". Tuy nhiên, cài đặt này đã chính xác và Helo dường như vẫn nói "localhost".
Jørn Schou-Rode

Những gì bạn đang nói là một tên thư đi, ngạc nhiên, ngạc nhiên , /etc/mailname. Theo mặc định, nó được sử dụng để đủ điều kiện địa chỉ không đủ tiêu chuẩn . Những người chỉ bao gồm từ tên người dùng. Bằng cách thêm tên miền từ /etc/mailname. Địa chỉ kết quả được sử dụng trong Fromtiêu đề.
x-yuri

2

Các primary_hostnamebiến được điền theo tên miền đầy đủ (FQDN) của hệ thống. Trên Debian và các hệ thống liên quan, điều này thường được hình thành bằng cách sử dụng nội dung của tệp /etc/hostname/etc/hosts. Tệp tên máy chủ phải chứa tên máy chủ ngắn (ví dụ foo) và tệp máy chủ phải chứa mục nhập được phân giải foothành foo.bar.baz, tức là tên máy chủ có hậu tố tên miền (thường khớp với mục nhập DNS).

Đầu ra từ lệnh hostname(không có bất kỳ tham số nào) sẽ trả về cái trước và hostname -fđầu ra sẽ trả về cái sau.

Tệp tên máy chủ thường được điền khi cài đặt và tệp máy chủ có thể được chỉnh sửa để có một bản ghi khác trong đó bên cạnh các bản ghi localhost mặc định - tệp này phải có dạng:

<IP address> <hostname FQDN> <hostname>

Ba cột nên được phân tách bằng dấu cách hoặc tab, không thành vấn đề. Địa chỉ IP có thể là 127.0.0.1 giống như localhost, nhưng phần tên máy chủ đã khớp với tên máy chủ của hệ thống và phần giữa phải là FQDN, tức là tên máy chủ có hậu tố tên miền.

Để xác minh dòng đang hoạt động, chỉ cần chạy hostname -fvà kiểm tra xem nó có trả về FQDN của máy chủ của bạn không.

Cuối cùng, khởi động lại Exim, ví dụ:

sudo service exim4 restart

Sau đó, bạn nên bắt đầu nhìn thấy nó đúng cách. Biến của nó có thể được xác minh bằng cách chạy:

/usr/sbin/exim4 -bP primary_hostname

(NB: Ban đầu tôi đã thực hiện điều này như là một chỉnh sửa cho câu trả lời từ năm 2009, nhưng nó đã bị từ chối. Những điều tôi đã sửa ban đầu là: không cần phải lặp lại bản ghi localhost mặc định, chỉ cần giải thích bổ sung là gì; Địa chỉ IP có thể được sử dụng; giải thích FQDN là gì; giải thích cách tự xác minh exim.)


/usr/sbin/exim4 -bP primary_hostnamekhông hoạt động. Bạn có thể xác minh tên máy chủ của Helo bằng cách gửi email kiểm tra tới trình kiểm tra xác thực của port25 hoặc bất kỳ hộp thư nào khác nơi bạn có thể xem bản gốc. Thêm về nó ở đây . Xem xét cập nhật câu trả lời của bạn.
x-yuri

Nó hoạt động tốt trên máy ổn định Debian của tôi (kéo dài). Bạn có thể vui lòng giải thích chính xác nó không làm việc cho bạn? Lưu ý tài liệu tại exim.org/exim-html-cản/doc/html/spec_html/ Khăn nói rõ rằng mặc định helo_data$primary_hostname. Trên các hệ thống Debian, bạn có thể ghi đè nó bằng REMOTE_SMTP_HELO_DATAbiến, nhưng nếu bạn chỉ đặt đúng tên máy chủ chính của mình, điều đó không cần thiết.
Josip Rodin

Tôi tin rằng tôi đã cố gắng và nó phàn nàn về việc không tranh luận. Nhưng không thể tái tạo nó bây giờ, vì vậy đừng bận tâm, xấu của tôi. Về "nếu bạn chỉ đặt đúng tên máy chủ chính của mình", thông thường không được chấp nhận rằng tên máy chủ phải giải quyết mọi vấn đề. Vì vậy, hãy nói "nếu bạn đặt tên máy chủ theo cách exim mong bạn ..." và để nó ở đó :)
x-yuri

Tôi xin lỗi, nhưng tôi không nghĩ sẽ khôn ngoan khi đưa ra bất kỳ kết luận đặc biệt nào về một cuộc thảo luận dài về tranh luận từ hơn một thập kỷ trước theo mệnh giá. Sẽ hữu ích hơn nếu bạn chỉ vào một số tài liệu chính sách liên quan đến điều đó.
Josip Rodin

Đó là điều tốt nhất tôi có thể tìm thấy. Nếu bạn có thể tìm thấy bất cứ điều gì tốt hơn hoặc bằng chứng về lời nói của bạn, tôi sẽ rất vui nếu bạn nói với tôi. Cho đến bây giờ tất cả những gì tôi có thể nói là ngay cả những ngày này vẫn có những người không đặt tên máy chủ /etc/hosts. Và tất cả những gì tôi yêu cầu là không gọi đúng những gì thường không được chấp nhận.
x-yuri

1

sau khi thêm cùng một chuỗi trong / etc / hosts, tên máy chủ -f sẽ trả về FQDN của bạn


Nói cách khác, myhostnameđi đến /etc/hostname(theo sau hostname myhostname). Và 127.0.0.1 mydomain.com myhostname.com localhostđi đến /etc/hosts. Cộng với tải lại eximchỉ trong trường hợp.
x-yuri

0

Tôi có cùng một vấn đề. Tôi cần thay đổi tên máy chủ thư, vì một số email không thành công, khi chúng được gửi. Với lỗi này:

host receiver.server.com [200.200.200.200]: 550 <info@sender.server.com>: Sender address rejected: Domain not found

Vì vậy, tôi thay đổi nó thành param_hostname/etc/exim.config param

Một số mã của tập tin này:

smtp_connect_backlog = 50
smtp_accept_max = 100

#primary_hostname = myhostname.com 
deliver_queue_load_max = 3

Hah, bài đăng này giúp tôi với "chính_hostname" và bây giờ exim của tôi hoạt động tốt hơn bao giờ hết :)

0

trong WHM goto Exim Trình quản lý cấu hình -> Trình chỉnh sửa nâng cao

cuộn xuống cho đến khi bạn tìm thấy "Thêm cài đặt cấu hình bổ sung" (một nút lớn màu xanh) và nhấp vào nó.

trong dòng mới, thêm [chính_hostname] = [mydomain.com]

cuộn xuống phía dưới và nhấp vào Lưu.

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.