도메인 이름 없이 메일 전달자를 사용할 수 있나요?

도메인 이름 없이 메일 전달자를 사용할 수 있나요?

저는 웹 기반 Arduino를 사용하여 집 주변의 물건을 감지하려고 합니다. 예를 들어 건조기가 완료되면 문자 메시지를 보내길 원합니다. 따라서 Arduino가 SMTP 명령을 사용하여 통신할 수 있는(암호화되지 않은) Linux 시스템에 로컬 메일 서버를 두는 것이 유용합니다. 서버는 Arduino에서 생성된 메시지를 다음으로 전달합니다.[이메일 보호됨], 결국 문자 메시지를 받게 되었습니다. 이메일을 수신하기 위해 이 서버를 사용할 필요가 없으며 Arduino가 로컬 네트워크 외부에서 통신하는 것을 원하지 않습니다.

도메인 이름 없이 이러한 메일 전달자를 설정할 수 있습니까?

답변1

Arduinos는 외부 세계에 이메일을 보낼 수 있습니다(직접) 인터넷 없음사용권.

이렇게 하려면 다음이 필요합니다.

  • 인터넷 접속이 가능한 상자에서 포트 25에 postfix와 같은 이메일 릴레이를 설정하고 내부 네트워크 또는 Arduino 네트워크가 별도의 LAN/VLAN인 경우 승인하십시오.
  • API는 Arduino에서 이메일을 보내는 코드에 사용되며, 이러한 이메일은 sendmail API 대신 포트 25를 사용하여 TCP를 통한 통신을 기반으로 합니다. IP를 통해 릴레이/프록시 시스템을 SMTP 릴레이로 지정합니다. ( smtplib예를 들어 pythonSMTP 주소가 제공된 경우)
  • FROM 주소를 외부에 존재하는 도메인의 주소로 지정하거나, 드물지만 대화 중인 서버에 따라 기존 이메일을 사용하십시오. 그렇지 않으면 스팸 방지 조치로 인해 이메일이 삭제됩니다. (이것이 중요합니다. 저는 이 때문에 종종 개발자로부터 티켓을 받습니다.) 이메일의 도메인 이름이 본인의 것이 아니어도 되지만, 그럴 경우 스팸 포인트가 줄어듭니다.

나중에 더 강력한 다른 Linux 시스템(예: Raspberry Pi 또는 클론)을 설정해야 하는 경우 ssmtp더 효율적인 sendmail API를 사용하여 이메일을 전달할 수 있는 것도 좋고 매우 가벼운 서비스입니다.인터넷에 직접 접속할 수 없는 상자에서(이것이 제가 사용하고 있는 것입니다).

실제로 어려운 부분은 인터넷 연결 없이 이메일을 보내는 Arduino를 다루는 것이 아닙니다. 이는 SMTP 서버 및/또는 홈 ISP에서 시행할 수 있는 스팸 방지 및 보안 조치 때문입니다. 예를 들어, 세계 일부 지역에서는 ISP가 가정 고객을 위해 포트 25/TCP(SMTP)를 차단하는 경우가 많습니다. 그렇다면 또 다른 보충 질문을 드리는 것이 좋습니다.

답변2

작은 "에이전트" 스크립트를 작성합니다.

예를 들어 무언가를 실행하거나 netcatArduino socat가 연결된 내부 네트워크 인터페이스에서 수신 대기하는 포트를 사용합니다. socat그런 다음 배치 메일 클라이언트를 사용하여 arduino에서 수신된 모든 "전보"에 대해 mms.att.net을 통해 메일을 보내는 쉘 스크립트 등으로 공급됩니다.

아무것도 반환할 필요가 없다면 다음과 같이 간단할 수 있습니다.

nc -k -l 8888 | while read sender telegram ; do echo $sender sent: $telegram ; done

그런 다음 통화를 echo비슷한 것으로 바꾸십시오 mail -s $sender $telegram <other_options>. 원하거나 필요한 경우 "오류 처리"를 추가하십시오.

Arduino에서 SMTP 명령을 사용하여 전송해야 하는 경우(TCP 연결을 통한 원시 텍스트 대신) 예를 들어 expectArduino 전송 후 MAIL FROM: .... RCPT TO: ....올바른 응답을 위해 무언가를 구성해야 합니다.

관련 정보