[server] 데비안 박스에서 Exim4의 primary_hostname을 어떻게 변경합니까?

메일을 전달하려는 일부 원격 SMTP 서버가 내 서버에서 HELO를 수락하지 않습니다.

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

분명히 내 Exim4 서버는 localhostFQDN으로 보냅니다 . net 및 많은 구성 파일을 검색하면서 HELO 중 FQDN으로 전송 된 값이 primary_hostname구성 변수 에서 추출된다는 것을 알게되었습니다 .

내 질문은 : 데비안 시스템 에서이 변수를 변경 하는 올바른 방법 은 무엇 입니까? Exim4 구성 파일에서 값을 하드 코딩 할 수 있다고 생각하지만 IMHO는 값이 자동으로/etc/mailname 다른 중앙 집중식 이름 구성과 일치 하면 더 의미가있는 것처럼 보입니다 .

내 질문에 대한 답변은 데비안 위키 에서이 텍스트에서 찾을 수 있다고 생각합니다 .

EHLO / HELO에서 Exim이 사용하는 이름은 구성 옵션에서 가져옵니다 primary_hostname. 데비안의 exim4 기본 설정은 설정되어 있지 않습니다 primary_hostname. 그런 다음 Exim은 기본적으로 uname ()으로 호스트 이름을 찾습니다. 해당 호출이 하나의 구성 요소 만 리턴하면 gethostbyname () 또는 getipnodebyname ()을 사용하여 완전한 호스트 이름을 얻습니다.

Exim HELO가 localhost.localdomain 인 경우 일부 버전의 데비안 설치 프로그램에서 잘못 구성된 / etc / hosts가있을 수 있습니다. 이 경우 / etc / hosts를 수정하십시오.

불행히도, 나는 이것이 의미하는 바를 정확히 아는 Linux 서버 관리에 익숙하지 않습니다.



답변

/ etc / hosts 파일에는 최소한 두 개의 레코드가 있어야합니다. 첫 번째 레코드는 다음과 같은 형식이어야합니다.

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

두 번째는 다음과 같은 형식이어야합니다.

127.0.0.1 localhost

또한 / etc / hostname 파일에 서버의 FQDN이 포함되어 있고 실행 중이 hostname -f면 서버 FQDN이 반환 되는지 확인해야합니다 . 이 모든 것이 올바른지 확인하고 Exim을 다시 시작하면 HELO가 올바르게 표시되기 시작해야합니다.


답변

단일 구성 파일을 사용하는 경우 PRIMARY_HOST_NAME 변수를 원하는 이름으로 설정하십시오.

예를 들어 /etc/exim4/exim4.conf에서 :

PRIMARY_HOST_NAME = mybox.mydomain.com

또는 설정 MAIN_HARDCODE_PRIMARY_HOSTNAME이 분할 파일 구성을 사용하는 경우 갱신 exim4.conf.conf에.

안전하려면 exim을 다시 시작하십시오.


답변

exim4를 설치하는 동안 기본 호스트 이름을 묻는 메시지가 나타납니다. 당신은 명령을 실행할 수 있습니다

sudo dpkg-reconfigure exim4-config

프롬프트를 다시 살펴 봅니다.

내가 아는 한, 이미 ‘분할 구성'(/etc/exim4/conf.d 아래에 작은 파일이 많이 있음)을 사용하고 있으며 프롬프트가 표시되면 dpkg-reconfigure가 덮어 쓰지 않아야합니다. 메시지가 표시되는 설정 이외의 기존 구성 변경은 안전하지만 우선 백업을 수행해야합니다.


답변

primary_hostname변수는 시스템의 완전한 도메인 이름 (FQDN)에 따라 충전된다. 데비안 및 관련 시스템에서는 일반적으로 /etc/hostname/etc/hosts파일 의 내용을 사용하여 구성됩니다 . 호스트 이름 파일은 짧은 호스트 이름 (예를 포함한다 foo) 및 호스트 파일은 해결 항목이 포함되어야 foofoo.bar.baz, 즉 호스트 이름의 도메인 접미사 (일반적으로 DNS 항목을 일치)와 함께합니다.

명령의 출력 hostname(매개 변수 없음)은 전자 hostname -f를 반환하고 출력은 후자를 반환합니다.

호스트 이름 파일은 일반적으로 설치시 채워지며 호스트 파일은 기본 localhost 레코드 옆에 다른 레코드를 갖도록 편집 할 수 있습니다. 형식은 다음과 같아야합니다.

<IP address> <hostname FQDN> <hostname>

세 개의 열은 공백이나 탭으로 구분해야하지만 중요하지 않습니다. IP 주소는 localhost와 마찬가지로 127.0.0.1 일 수 있지만 호스트 이름 부분은 시스템 호스트 이름과 일치하고 중간 부분은 FQDN이어야합니다 (예 : 도메인 접미사를 가진 호스트 이름).

회선이 작동하는지 확인하려면 간단히 실행 hostname -f하여 서버의 FQDN을 반환하는지 확인하십시오.

마지막으로 다음과 같이 Exim을 다시 시작하십시오.

sudo service exim4 restart

나중에 HELO가 올바르게 표시되기 시작해야합니다. 다음을 실행하여 변수를 확인할 수 있습니다.

/usr/sbin/exim4 -bP primary_hostname

(NB : 원래 2009 년 답변에 대한 편집으로이 작업을 수행했지만 거부되었습니다. 원래 수정 한 사항은 기본 로컬 호스트 레코드를 반복 할 필요가 없었으며 추가 내용을 설명해야합니다. IP 주소를 사용할 수 있습니다. FQDN이 무엇인지 설명하고 exim 자체를 확인하는 방법을 설명하십시오.)


답변

/ etc / hosts에 동일한 문자열을 추가하면 hostname -f 는 FQDN을 반환합니다.


답변

나는 같은 문제를 가지고있다. 일부 이메일은 발송 될 때 실패하기 때문에 메일 호스트 이름을 변경해야합니다. Whith이 오류 :

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

그래서 나는 그것을 /etc/exim.configparam primary_hostname 으로 변경합니다

이 파일의 일부 코드 :

smtp_connect_backlog = 50
smtp_accept_max = 100

#primary_hostname = myhostname.com
deliver_queue_load_max = 3


답변

WHM에서 Exim Configuration Manager로 이동-> 고급 편집기

“추가 구성 설정 추가”(큰 파란색 버튼)가 나타날 때까지 아래로 스크롤하여 클릭하십시오.

새 줄에 [primary_hostname] = [mydomain.com]을 추가하십시오.

하단으로 스크롤하여 저장을 클릭하십시오.