Mailutils에서 오류가 발생하고 메시지를 보낼 수 없습니다.

Mailutils에서 오류가 발생하고 메시지를 보낼 수 없습니다.

내 데비안 서버에는 exim4가 설치되어 있습니다. PHP를 사용하여 메일을 보낼 수 있고 MTA가 구성된 계정을 사용하기 때문에 MTA가 작동한다는 것을 알고 있습니다./etc/exim4/passwd.client

하지만 명령줄을 사용하려고 하면

echo "test" | mail -s "test" [email protected]

알겠어요

mail: cannot send message: Process exited with a non-zero status

$? 36으로 설정

또한 /var/log/exim4/mainlog에는 항목이 표시되지 않습니다. 단지 PHP에서 메일을 보내려는 시도(성공적으로)와 일반적인 시작 및 종료 대기열 실행 메시지만 표시됩니다. 이는 mail 명령이 MTA에 도달하지 않음을 나타냅니다.

mail --version

mail (GNU Mailutils) 3.1.1
Copyright (C) 2007-2016 Free Software Foundation, inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

온라인으로 검색한 결과 postfix 구성에 문제가 있는 사람들을 찾았지만 내 MTA가 exim4이고 자체적으로 잘 작동하므로 문제가 무엇인지 알고 싶습니다.

나는 두 개의 다른 서버를 설정했고 시스템 메일은 잘 작동하며 cronjob에서 사용합니다. 방금 exim4를 설치하고 그에 따라 구성했는데 이 문제가 발생한 적이 없습니다.

답변1

너무 길어요. 32/64비트 문제일 수 있습니다. bsd-mailx를 설치해 보세요

방금 같은 문제가 발생했습니다. "예전에는 작동했지만 지금은 작동하지 않습니다. 아무것도 변경하지 않았습니다." 범주에 있습니다. 혼란스럽게도 이메일이 실패하면 /var/log/exim4의 로그에는 아무 것도 표시되지 않습니다.

나는 여러 개의 Linux Debian 시스템을 가지고 있는데 그 중 일부는 헤드가 없고 모두 Debian Stable을 실행하고 있습니다. 다행히 명령줄에서 메일을 실행하면 헤드리스 컴퓨터에서는 작동하지만 다른 컴퓨터에서는 작동하지 않는다는 사실을 발견했습니다. 이는 가능한 문제를 이해하기 위해 두 설정을 나란히 비교할 수 있는 유용한 출발점을 제공했습니다.

눈에 띄는 차이는 없는 것 같아서 답답해서 만들어봤습니다.

apt remove --purge exim4*

다시 설치하세요. 이것은 효과가 없습니다.

간단히 말해서 /usr/bin/mail에 있는 메일 바이너리를 살펴보고 /etc/alternatives/mail을 "추적"하여 다른 시스템에서 다른 메일 클라이언트에 연결되어 있음을 발견했습니다. 작동하지 않는 컴퓨터에서는 다음으로 연결됩니다.

lrwxrwxrwx 1 root root 23 Aug 23  2017 /etc/alternatives/mail -> /usr/bin/mail.mailutils

그러나 작업 기계에서는 다음과 연결됩니다.

lrwxrwxrwx 1 root root 18 Jun 15  2015 /etc/alternatives/mail -> /usr/bin/bsd-mailx

작동하지 않는 컴퓨터에 bsd-mailx를 설치했는데 자동으로 /etc/alternatives의 링크가 업데이트되었고 문제가 사라졌습니다. 이제 메일을 사용할 수 있습니다.

내가 축하할 때, 나는 작동하는 다른 기계를 보고 그것이 또한 연결되어 있다는 것을 알았습니다 /etc/alternatives/mail -> /usr/bin/mail.mailutils. 그래서 그것은 그것이 mailutils라는 어떤 이론도 반증하는 것처럼 보였습니다.

두 가지 설치를 모두 살펴보았습니다(죄송하지만 형식을 얻을 수 없습니다).

작동하지 않는 기계:

dougie@nick:~$ dpkg -l | grep mailutils 
ii  libmailutils5:i386                    1:3.1.1-1                       i386         GNU Mail abstraction library

ii mailutils 1:3.1.1-1 메일 처리를 위한 i386 GNU mailutils 유틸리티 ii mailutils-common 1:3.1.1-1 GNU mailutils용 모든 공통 파일

작업 기계:

dougie@skye:~$ dpkg -l | grep mailutils
ii  libmailutils5:amd64                     1:3.1.1-1                                       amd64        GNU Mail abstraction library

ii mailutils 1:3.1.1-1 amd64 메일 처리를 위한 GNU mailutils 유틸리티 ii mailutils-common 1:3.1.1-1 GNU mailutils용 모든 공통 파일

따라서 이것은 단지 직감일 뿐이지만 32비트 또는 64비트 설치 여부와 관련이 있을 수 있습니다. 내 해결책은 bsd-mailx를 설치하는 것이었습니다.

답변2

내 컴퓨터도 64비트 컴퓨터인데 오류는 다음과 같습니다.

$ echo test | mail -s "testing ssmtp setup" [email protected]
mail: cannot send message: Process exited with a non-zero status

하지만 @Dougie Nisbet을 팔로우하고 bsd-mailx를 설치하면 다음과 같이 반응합니다.

$ echo test | mail -s "testing ssmtp setup" [email protected]
send-mail: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 5-v6sm30064941pgc.86 - gsmtp)
Can't send mail: sendmail process failed with error code 1

나는 이것이 대답이 아니라는 것을 안다. 하지만 @Dougie Nisbet의 답변에 대해서는 언급할 수 없기 때문에 다른 사람들이 위의 답변을 따르는 것을 피하기 위해 여기에 글을 쓰고 있습니다.

답변3

Postfix 오류 로그 파일을 확인해 보니 인증 실패로 인해 이메일이 전송되지 않은 것 같습니다.

다음 사항을 확인하세요. 1. 비밀번호(SMTP 인증 비밀번호)를 확인하세요. 2. 보안 수준이 낮은 애플리케이션이 이메일 계정에 액세스하도록 허용하세요.

몇 년 전: https://support.google.com/mail/answer/78754

관련 정보