첫 번째 이메일은 반송되고 두 번째 이후 이메일은 반송됩니다.

첫 번째 이메일은 반송되고 두 번째 이후 이메일은 반송됩니다.
550 relay not permitted

이것은 내 데비안 노트북에서 Exim4가 보낸 이메일이 반송될 때 나타나는 오류 메시지입니다.

이상하게도 첫 번째 이메일만 반송됩니다. 두 번째 이후의 이메일은 릴레이를 통과하여 아무런 문제 없이 목적지에 도달합니다. 그러나 노트북을 다시 시작하면 다시 시작한 후 첫 번째 이메일이 다시 반송됩니다.

포트 587에서 STARTTLS 이후 릴레이는 일반 텍스트 비밀번호로 보호됩니다. X.509 인증서는 뱀 오일이 아닌 실제 인증서입니다. 저는 중계서버와 노트북을 관리하고 있습니다. 중요한 경우 릴레이 서버도 Debian에서 Exim4를 실행하고 있습니다. Postfix는 관련되지 않습니다.

부팅할 때마다 더미 이메일(또는 단지 SMTP EHLO?)을 보내도록 랩톱을 구성하면 문제가 해결될 수 있다고 생각했지만 해결된 동작이 이상해 보입니다. 혼란스러워요. 이 문제를 해결하기 위해 다음에 조사해야 할 사항을 알고 계시다면 조언을 주실 수 있습니까?

답변1

이메일 시간 초과는 데몬이 IPv6를 먼저 시도하기 때문에 발생할 가능성이 높습니다.

IPv6 프로토콜 스택 구현기본적으로IPv4 스택의 우선순위를 지정하므로 프로그램/데몬이 통신을 시도할 때 대상에 공용 IPv4 및 IPv6 주소가 모두 있으면 IPv6 주소를 먼저 사용하려고 시도합니다.

공용 IPv6가 없더라도 IPv6 로컬 호스트 및 링크 로컬 주소가 있습니다.

이번이 처음이 아니다어쩌면 지난번이 아닐지도 몰라시간이 지나서 나는 인터넷 데몬이 먼저 링크 로컬 주소를 소스 IP 주소로 사용하여 다른 주소와 통신을 시도하고 시간 초과 후에만 할당된 시간/시도가 남아 있는 경우 데이터 전송으로 되돌아갈 수 있다는 것을 발견했습니다. IPv4 대상으로. (이 때문에 과거에 운영했던 ISP에서 DNS 및 이메일 문제를 겪은 적이 있습니다.)

disable_ipv6=true따라서 exim의 경우 비분할 또는 분할 구성 체계를 사용하는지 여부에 따라 또는 지시문을 사용하여 애플리케이션/데몬 수준에서 IPv6를 비활성화할 수 있습니다 ./etc/exim4/exim4.conf.template/etc/exim4/update-exim4.conf.conf

~에서Exim 인터넷 메일러 - 14장 - 주요 구성

비활성화_ipv6 목적: main 유형: 부울 기본값: false
이 옵션이 true로 설정되면 Exim 바이너리가 IPv6를 지원하더라도 IPv6 활동이 발생하지 않습니다. AAAA 레코드는 조회되지 않으며 local_interfaces에 나열된 모든 IPv6 주소, 수동으로 라우팅된 라우터 데이터 등은 무시됩니다. IP 리터럴이 활성화된 경우 IP 리터럴 라우터는 IPv6 리터럴 주소 처리를 거부합니다.

또 다른 접근 방식은 IPv4 주소에만 바인딩하는 것입니다.단점은 구성에서 IPv4 주소를 하드코딩해야 한다는 것입니다.:

local_interfaces = <; 127.0.0.1 ; \
                  192.168.23.65

시스템 자체는 IPv6를 적극적으로 사용하지 않기 때문에 다음과 같습니다.

파일의 마지막 줄에 추가되며 기본적으로 IPv4에 우선순위가 부여됩니다./etc/gai.conf

precedence ::ffff:0:0/96  100 

기본적으로 IPv6 스택을 비활성화 하도록 추가되었습니다 /etc/sysctl.conf(커널 3부터 지원되는 설정).

net.ipv6.conf.all.disable_ipv6=1

sysctl은 시작 시 적용됩니다. 시작하기 전에 활성화하려면 다음을 수행하십시오.

sudo sysctl -p

이를 IPv6 비활성화라고 부르더라도 모듈은 계속 로드되며 인터페이스에 더 이상 IPv6 주소가 없어도 IPv6 소켓에 연결된 애플리케이션을 계속 볼 수 있습니다. IPv6 커널 모듈이 로드되지 않도록 IPv6을 비활성화하는 옵션을 커널에 전달할 수도 있습니다. 편집하다 /etc/default/grub:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

그런 다음 grub이 있는 경우 이를 적용하십시오(grub 파티션이 다를 수도 있고 없을 수도 있습니다. ARM 서버에는 해당 파티션이 없었고 커널 옵션을 위해 다른 파일을 편집해야 했습니다).

sudo update-grub
sudo grub-install /dev/sda

응용 프로그램 수준에서 IPv6을 비활성화하려면 하나 이상의 데몬을 구성해야 할 수도 있습니다( xinetd설치한 경우).

답변2

@RuiFRibeiro의 답변이 중요합니다. 먼저 읽어보세요. 그러나 이 답변을 이해한 후에는 도움이 될 수 있는 몇 가지 추가 정보가 있습니다.

릴레이 호스트가 메일을 릴레이하기 전에 랩톱 자체 인증을 요구하는 경우(릴레이 호스트는 아마도 그래야 함) 랩톱에서 Exim4를 구성해야 합니다.항상 신원을 확인하세요중계서버로.

릴레이 서버는 "스마트 호스트"라고도 합니다. 뭐라고 부르든 문제는 여기에 있습니다. Notebook Exim4의 기본 동작은 [i] 메일을 ​​전송하기 전에 인증을 시도하는 것이지만, 이것이 실패하면 [ii] 인증되지 않은 메일을 보냅니다.

설정에 실패하면 이메일이 반송되어 영구적으로 실패하게 됩니다. 물론, 당신은 그것이 결코 [ii]에 속하지 않을 것이라고 생각할 수도 있지만, 분명히 당신의 경우에는 때때로 그렇습니다.

수정 사항은전송/30_exim4-config_remote_smtp_smarthostExim4 구성 섹션(파일에 있는 내 시스템)/etc/exim4/exim4.conf.template). 이 섹션에서 다음으로 시작하는 섹션을 찾으세요.

remote_smtp_smarthost:

이 섹션에서는 다음과 같이 시작하는 줄을 찾을 수 있습니다.

  hosts_try_auth =

어떤 것들은 기호를 따르겠지만, 관심을 끄는 것은 기호입니다 =. hosts_try_auth다음으로 변경하세요.

  hosts_require_auth =

로고 이후에는 변경 사항이 없습니다 =.

결과적으로 [i]가 실패할 때마다 아웃바운드 메일 배달이 실패하게 되어 [ii]가 메일에 도달하지 못하게 됩니다. 이것이 어떻게 도움이 되나요? [ii]의 실패와 달리 [i]의 실패는 다음과 같기 때문에 도움이 됩니다.일시적인,영구적이지는 않습니다. 표시된 변경을 수행한 경우 시스템은 인증 없이 포기하는 대신 인증을 다시 시도하여 실패에 응답합니다. 이것이 당신이 원하는 행동입니다.

구성 변경 사항을 커밋하는 방법

구성 파일을 변경하는 것만으로는 문제가 해결되지 않습니다. 예를 들어 겉으로는 모호하지만 실제로는 중요한 데비안 명령을 실행하여 변경 사항을 커밋하려면 exim4-config를 사용해야 합니다 dpkg-reconfigure -phigh exim4-config. 구성 변경을 커밋한 후 실제로 서버를 다시 시작해야 하는지는 모르겠지만 항상 다시 시작합니다. 다시 시작하려면 명령을 사용하십시오 invoke-rc.d exim4 restart. [그런데, 초보자라면 새로운 시작을 위해 시스템을 재부팅하는 것이 더 자신감을 가질 수 있습니다.모든 것.저도 초보때 이런 짓을 했으니 탓하진 않겠지만, 단일 서비스를 다시 시작하기 위해 재부팅하는 것은 정말 데비안 방식이 아닙니다. 당신은 좋은 로프와 장비를 갖춘 암벽 등반가와 비슷합니다. 결국 장비를 신뢰할 때가 언제인지 알게 될 것입니다. 언젠가는 항상 재부팅하는 대신 중요한 명령인 Invoke-rc.d(8)를 편안하게 사용하는 방법을 배워야 합니다. ]

기호에 대해 자세히 알아보려면 hosts_require_authExim4 소프트웨어와 함께 제공되는 세부 사양 설명서를 참조하세요.

(참고로 저는 OP입니다. 질문을 올렸을 때 답변이 부족했는데 @RuiFRibeiro가 안내한 후 이 답변에서 제공하는 정보를 찾았습니다.)

관련 정보