mailx
일반 패키지 앱을 사용하여 이메일 알림을 보내고 싶습니다 /bin/mail
.
echo "Testing alerts from prod server" | mail -s "Example email" [email protected]
mydomain.com의 DNS를 제어합니다. mydomain.com은 Google Apps도 사용합니다.
Google Apps는 일반적으로 임의의 SMTP 클라이언트로부터 이메일을 전달하지 않습니다.Google 애플리케이션이 내 Unix 서버를 '신뢰'하여 메일을 보내도록 하는 가장 좋은 방법은 무엇입니까?
답변1
이메일을 보내려면 스마트 호스트에 대한 인증을 설정해야 할 수도 있습니다. 이 경우 스마트 호스트는 Google 서버일 수 있습니다.
대략적으로 말하면 작동 방식은 다음과 같습니다.
(authentication)
mail -----------> local mailserver ----------------> remote smarthost
즉, 로컬 메일 서버는 클라이언트 프로그램(예: mail
)으로부터 메시지를 받아 인증한 후 원격 스마트 호스트로 전달합니다.
로컬에서 사용하는 메일 서버를 지정하지 않았지만 Exim의 예를 사용하겠습니다. Exim의 경우 /etc/exim4/passwd.client
비밀번호 파일에 항목을 추가 해야 합니다 . 이는 파일의 기본 상태입니다.
# password file used when the local exim is authenticating to a remote
# host as a client.
#
# see exim4_passwd_client(5) for more documentation
#
# Example:
### target.mail.server.example:login:password
댓글을 보니 man 5 exim4_passwd_client
더 많은 정보가 있습니다.
사용되는 서버는 다를 수 있지만 대부분의 배포판에는 기본적으로 로컬 메일 서버가 설정되어 있을 것이라고 생각합니다. Debian과 Ubuntu에는 기본적으로 Exim이 설정되어 있을 수 있습니다. 메일 서버가 설치되어 있어도 기본적으로 스마트 호스트에 연결하도록 설정되어 있지 않을 수 있으니 주의하세요.
로컬 메일 서버가 설치되어 있지 않으면 설치해야 합니다. 인증을 위해 로컬 메일 서버를 우회하고 스마트 호스트로 직접 전송하는 프로그램이 있지만 이는 좋은 방법이 아닙니다.
답변2
설명된 "보안 수준이 낮은 애플리케이션"을 활성화해야 합니다.여기이메일을 수락하도록 하세요. 하지만 저는 일반 Gmail 계정을 사용하고 있습니다.
답변3
오래된 질문을 다시 올려서 죄송합니다. 하지만 이 질문에 대한 검색 결과에는 계속 표시됩니다.
제가 발견한 것은 Google이 이제 완전한 "기기 관리"를 수행하므로 로그인하려는 모든 기기에 액세스해야 한다는 것입니다.
https://accounts.google.com/DisplayUnlockCaptcha
문제는 내 exim4 서버에 X11 설정이 없고 링크로 이동하여 "계속" 버튼을 누를 때 동적으로 생성되는 토큰 URL을 추출하는 마법의 CURL 공식을 알아낼 수 없다는 것입니다. 그 링크에.
따라서 exim4에서 TLS/mta 지원을 구성했지만(Google은 더 이상 SSH/smtps를 지원하지 않음) smtp.google.com:587에 연결하려면 다음 작업을 수행하지 않으면 내 사용자 이름/비밀번호가 허용되지 않습니다.
https://myaccount.google.com/lesssecureapps?utm_source=google-account&utm_medium=web
"보안 수준이 낮은 애플리케이션"에 대한 액세스를 활성화합니다.
다음을 통해 수동으로 테스트하기도 했습니다.
openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf
발행 된:
EHLO {servername}
AUTH PLAIN {base64 encoded combo username password string}
오류가 발생할 때마다:
535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials l22sm5213582ywl.68 - gsmtp
다음을 사용하여 Base64로 인코딩된 문자열을 얻을 수 있습니다.
echo -ne "\0{login_email}\0{login_password}"|base64
"보안 수준이 낮은 앱 활성화"를 설정하면 위의 예는 다음을 반환합니다.
235 2.7.0 Accepted
그리고 exim4도 작업을 시작했습니다.
인증 코드 링크에 액세스하는 CLI 방법을 추천할 수 있는 사람이 있나요?