저는 Linux(Ubuntu 16.04)를 실행하는 대학 서버를 사용하고 있습니다. 이 서버를 사용하여(아래 Python, 아래 코드 사용) 이메일을 보내려고 하는데 나가는 SMTP 연결이 차단된 것 같습니다. (코드가 내 Mac에서 실행 중이고 서버에 멈춰 있기 때문에 이렇게 말하는 것입니다.) 차단을 해제할 수 있는 방법이 있나요?
물론 시스템 관리자에게 물어봤지만, 그동안 제가 할 수 있는 일이 있지 않을까 하는 생각이 들었습니다. 서버를 인터넷에 연결하려면 이미 내보내기를 추가해야 했습니다. 특히 다음 항목에 추가했습니다 .bash_profile
.
export https_proxy='...'
export http_proxy='...'
작동하려면 비슷한 작업을 수행해야 할 수도 있습니까? 이메일을 보내려면 "SMTP 인증(SMTP AUTH) 활성화"가 필요하다는 것을 (대학의) 웹 페이지에서 보았습니다. 하지만 온라인으로 확인해 보니 유용한 정보를 찾을 수 없었습니다. SMTP AUTH를 활성화한다는 것은 무엇을 의미합니까? 이는 이메일 서버에 연결할 때 보안 연결을 사용한다는 의미입니까?
이것은 이메일을 보내는 데 사용하는 Python 코드입니다.
server = smtplib.SMTP_SSL(smtp_ssl_host, smtp_ssl_port) <--- this is where is hangs
server.login(username, password)
server.sendmail(username, targets, msg.as_string())
server.quit()
이 이메일은 내 yandex 계정을 사용하여 보내고 있습니다.
답변1
댓글에서 언급했듯이 몇 가지 질문이 생겼습니다. 여기서 포트 25 문제에 대해 조금 이야기하겠습니다.
포트 25는 표준 포트입니다.암호화되지 않은SMTP 포트의 경우 시스템 관리자가 조직의 방화벽을 구성하여 이 포트의 아웃바운드 트래픽을 차단하는 것이 일반적입니다. 이렇게 하는 데에는 두 가지 주요 이유가 있습니다.
- 맬웨어, 악성 소프트웨어, 스패머 등이 악의적인 목적으로 이메일을 보내는 것을 방지합니다.
- 합법적인 사용자가 암호화되지 않은 채널을 통해 이메일을 보내는 것을 방지합니다.
두 번째는 관리자가 승인된 사용자가 암호화된 연결(예: SSL/TLS 사용)을 통해 이메일을 보낼 수 있도록 허용한다고 가정합니다. 보안 아웃바운드 SMTP의 표준 포트는 587입니다. 귀하의 경우 이것이 허용된다면 문제가 해결될 것입니다. 포트 587을 통해 SMTP 릴레이 서버에 대한 암호화된 연결을 설정합니다. 코드에서 이를 수행하는 방법을 알아내야 합니다(또는 별도로/다른 곳에서 수행하는 방법을 문의하십시오).
안타깝게도 #1이 #2를 대체하는 경우가 많으며 관리자조차도 보안 이메일 통신을 허용하지 않습니다. 그렇다면 SMTP 릴레이를 유지 관리하는 이메일 제공업체가 대체 포트에서 트래픽을 허용하는지 확인하세요. 예를 들어 일부는 포트 10025를 사용하는 옵션을 제공합니다. 또는 이메일을 전달할 수 있는 타사 이메일 제공업체가 있습니다. 즉, 포트 10025에서 이메일을 수락한 다음 포트 25에서 기본 공급자의 릴레이로 전달합니다. 다음은 내 검색에서 나온 첫 번째 예입니다."대체 포트 SMTP" 서비스. 이에 대한 수수료가 있습니다. 이 서비스를 무료(적어도 소량)로 제공하는 사람을 찾을 수 있습니다.
또는 관리자가 이 정책에 특별한 예외를 허용할 수도 있습니다. 예를 들어, 귀하가 회사에 근무하고 액세스가 비즈니스에 중요하다는 것을 증명하는 경우 제한된 수의 원본 호스트 및/또는 특정 SMTP 릴레이 주소에 대해 25/587의 트래픽을 허용할 수 있습니다.
여전히 성공하지 못한다면 차선책은 SSH 터널링일 수 있습니다. 방화벽 외부에서 SSH 서버(예: sshd)를 실행하는 컴퓨터에 액세스해야 합니다. 그런 다음 한 포트에서 수신 대기하고 아웃바운드를 다른 호스트의 다른 포트로 전달하는 특별한 유형의 연결을 설정할 수 있습니다. 온라인에 이미 많은 설명이 있으므로 이 작업을 수행하는 방법에 대해서는 자세히 설명하지 않겠습니다.
고쳐 쓰다:관리자와 상의하지 않고 대체 포트를 사용하거나 SSH 터널을 설정했는데 나중에 알게 되면 그다지 친절하지 않을 수 있다는 점을 덧붙이고 싶습니다. 고객이 만족하지 않는다면 이 옵션을 사용하지 않아도 됩니다. 반면에, 사전에 논의한다면 아예 금지할 수도 있습니다. 당신은 당신의 선택에 무게를 두어야합니다. 귀하가 수행하는 작업이 보안에 부정적인 영향을 미치지 않는 한 합리적인 관리자는 이에 동의할 것입니다. 그러나 그것들이 모두 합리적인 것은 아니다. :)