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


24

메일을 전달하려는 일부 원격 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 서버 관리에 익숙하지 않습니다.

답변:


21

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

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

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

127.0.0.1 localhost

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


/ etc / hostname을 로컬 컴퓨터 이름에서 FQDN으로 변경했습니다. hostname -f여전히 "localhost"를보고합니다. 답변에서 / etc / hosts에 대한 부분은 버그가있는 것 같습니다. 첫 번째 레코드는 무엇입니까?
Jørn Schou-Rode

1
hostname -f여전히 "localhost"를보고 하지만 / etc / hostname을 변경하면 문제가 해결 된 것 같습니다. 지금 메일을 배달 할 수 있습니다. 그래도 여전히 게시물의 누락 된 부분을보고 싶습니다 :)
Jørn Schou-Rode

죄송합니다! 포매팅 포브. 고정 :-)
Paul Lathrop

1
/etc/hostname데비안 시스템에는 일반적으로 FQDN이없고 짧은 호스트 이름 만 있습니다.
Josip Rodin

음, 첫 번째 줄 /etc/hosts수 있습니다은 127.0.0.2 mydomain.com myhostname( 127.0.0.2만큼 잘 작동 127.0.0.1루프백는 클래스 A 네트워크이기 때문에,). 아마도 두 줄을 하나로 결합 할 수는 127.0.0.1 mydomain.com myhostname localhost있지만 localhost표준 호스트 이름 127.0.0.1입니까? FQDN이 아닌 호스트 이름을 호스트 이름으로 사용했습니다. 또한 변경 사항 /etc/hostname이 즉시 적용되지는 않습니다 hostname myhostname. 또는 서버를 다시 시작하십시오.
x-yuri

8

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

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

PRIMARY_HOST_NAME = mybox.mydomain.com

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

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


나열된 호스트는 따옴표로 묶을 수 없으며, 그렇지 않으면 exim send HELO 'mybox.mydomain.com'가 Google에 메일을 보내는 데 방해가 될 수 있습니다.
mkomarinski

1
설명서에서이 "PRIMARY_HOST_NAME"변수 이름에 대한 언급을 찾을 수 없습니다. 어디서 찾았어요?
Josip Rodin

데비안에서는 update-exim4.conf설정을 변경 한 후에 실행해야합니다 . 그 후 일반적으로 재시작이 필요하지 않습니다.
x-yuri

... exim일반적으로 다시로드하지 않고 구성 변경 사항을 알 수 있습니다. 그러나 데몬 자체가 다시로드 될 때까지 구성을 다시 읽지 않는다고 가정하기 때문에 다시로드하는 것이 더 안전합니다. 그런 다음 위 줄만/etc/exim4/exim4.conf 포함 할 수있는 것처럼 들리지만 파일을 만드는 순간 무시됩니다./var/lib/exim4/config.autogenerated
x-yuri

... "SMTP 수신 또는 큐 실행을 위해 Exim이 시작하는 분기 된 프로세스는 새 구성 파일을 사용하지만 원래의 기본 exim- 데몬은 여전히 ​​이전 구성 파일을 사용합니다." 따라서 단일 구성 파일의 경우 /etc/exim4/exim4.conf.localmacros분할에을 사용하는 것이 가장 좋습니다 /etc/exim4/conf.d/main/000_localmacros( maindir의 파일 이 먼저 처리됨). 변경 후 update-exim4.conf+ systemctl reload exim4를 실행하십시오 .
x-yuri

4

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

sudo dpkg-reconfigure exim4-config

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

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


2
"메일 이름 [이것]은 정규화 된 단일 도메인 이름 (FQDN)이어야 함"만 요구하는 것 같습니다. 그러나이 설정은 이미 정확하며 HELO는 여전히 "localhost"라고 말합니다.
Jørn Schou-Rode

당신이 말하는 것은 놀라움, 놀라움으로가는 메일 이름입니다 /etc/mailname. 기본적으로 규정되지 않은 주소를 규정하는 데 사용됩니다 . 사용자 이름으로 만 구성된 것입니다. 에서 도메인 이름을 추가합니다 /etc/mailname. 결과 주소가 From헤더에 사용됩니다 .
x-yuri

2

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 자체를 확인하는 방법을 설명하십시오.)


/usr/sbin/exim4 -bP primary_hostname작동하지 않습니다. port25의 인증 검사기 또는 원본을 볼 수있는 다른 사서함 으로 테스트 이메일을 보내서 HELO 호스트 이름을 확인할 수 있습니다 . 여기 에 더 있습니다 . 답변을 업데이트하십시오.
x-yuri

내 데비안 안정 머신 (스트레치)에서 잘 작동합니다. 그것이 효과가 없다고 정확히 설명해 주시겠습니까? exim.org/exim-html-current/doc/html/spec_html/… 의 문서에 기본값 helo_data이 이라고 명시 되어 $primary_hostname있습니다. 데비안 시스템에서는 REMOTE_SMTP_HELO_DATA변수를 사용하여이를 재정의 할 수 있지만 기본 호스트 이름 만 올바르게 설정 한 경우에는 필요하지 않습니다.
Josip Rodin

나는 내가 시도한 것으로 믿고 논쟁하지 않는 것에 대해 불평했다. 그러나 지금 그것을 재현 할 수 없으므로 내 나쁜 점은 신경 쓰지 마십시오. "기본 호스트 이름을 올바르게 설정 한 경우"와 관련하여 일반적으로 호스트 이름이 어떤 것으로 해석되어야하는 것은 받아 들여지지 않습니다 . 그래서 "당신은 호스트 이름을 설정 한 경우 방식 수출입가 ... 당신을 기대한다"의 말을하자 그 :)에두고
X-유리

미안하지만, 10 년 전의 액면가에서 데비안이 오랫동안 논의 된 것에 대한 임시 결론을 취하는 것이 현명하다고 생각하지 않습니다. 그러한 것에 관한 정책 문서를 지적하면 더 도움이 될 것입니다.
Josip Rodin

내가 찾은 최고야 당신이 더 나은 것을 찾거나 당신의 말의 증거를 찾을 수 있다면, 당신이 말해 주면 기쁠 것입니다. 지금까지 내가 말할 수있는 것은 요즘에도 호스트 이름을 입력하지 않은 사람들이 있다는 것입니다 /etc/hosts. 그리고 내가 요구하는 것은 일반적으로 받아 들여지지 않는 것을 올바르게 부르지 않는 것입니다.
x-yuri

1

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


즉, myhostname진행 /etc/hostname(다음 hostname myhostname). 그리고 127.0.0.1 mydomain.com myhostname.com localhost에 간다 /etc/hosts. 만약 exim을 대비하여 다시로드하십시오 .
x-yuri

0

나는 같은 문제를 가지고있다. 일부 이메일은 발송 될 때 실패하기 때문에 메일 호스트 이름을 변경해야합니다. 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

헉,이 게시물은 "primary_hostname"나를 데 도움이 지금 내 수출입는 :) 어느 때보 다 더 잘 작동

0

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

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.