
나는 로그 파일을 백업하는 스크립트를 작성하기 시작했습니다. 로그 파일에서 오류가 발견될 때마다 나 자신에게 이메일을 보내고 싶습니다. 그러나 smtp/mail을 설치하면 해커에게 새로운 옵션이 열린다는 말을 들었으므로 내 서버가 손상되지 않았는지 확인하고 싶습니다.
이메일을 받지 않고 보내기만 할 수 있는 도구가 있나요? 또한 설치할 때 어떤 보안 고려 사항을 취해야 합니까?
답변1
그러나 smtp/mail을 설치하면 해커에게 새로운 옵션이 열린다는 말을 들었으므로 내 서버가 손상되지 않았는지 확인하고 싶습니다.
어느서비스는 "해커에게 새로운 옵션을 열어줄" 수 있습니다.잘 못 쓰여졌네요.그러나 메일의 경우 Postfix나 Exim4 모두 매우 안전합니다.
(일반적으로 10년 된 Sendmail을 사용하지 않는 한 괜찮습니다. 현재 버전은 안전하지만 어쨌든 Sendmail을 사용하지 않는 것이 좋습니다. 구성 파일은 사람이 읽을 수 없습니다. .)
이메일을 받지 않고 보내기만 할 수 있는 도구가 있나요?
모든 MTA(Postfix, Exim4, Sendmail)는 이 방식으로 작동할 수 있습니다. 루프백 주소( ::1
및 127.0.0.1
)만 수신하도록 구성하기만 하면 됩니다. SMTP 구성 요소를 완전히 비활성화할 수도 있습니다. 대부분의 Unix 프로그램에서는 이를 필요로 하지 않으며 /usr/sbin/sendmail
1을 통해 메일을 보내 므로 SMTP가 필요하지 않습니다.
하지만 "해커"에 대해서는 실제로 필요하지 않습니다. 괜찮은 MTA로 얻을 수 있는 최악의 상황은 릴레이를 위해 열어 두는 것입니다. 기본 구성이 이미 이를 처리하고 있습니다.
또 다른 옵션은 msmtp
완전한 SMTP 지원조차 하지 않는 입니다. Gmail이나 ISP와 같은 다른 메일 서버를 통해 메일을 릴레이하는 것뿐입니다. 그러나 개인용 컴퓨터에는 유용하지만 서버 환경에는 실제로 적합하지 않습니다.
1 " /usr/sbin/sendmail
"은(는) 함께 제공되는 프로그램입니다.모두MTA, "Sendmail"은 MTA의 이름입니다.특정한MTA.
답변2
표준 MTA(Postfix, Exim4, Sendmail 등)가 설치되어 있으면 쉘 스크립트에서 메일을 보내는 것은 매우 쉽습니다. 일반적으로 보내려면 mail
적절한 인수와 함께 명령을 사용하여 이메일 내용을 프로그램에 에코할 수 있습니다. 예를 들어:
echo "Error occurred in script at `date`" | mail -s "Error running script" [email protected]
인수 -s
는 제목을 지정하고 이메일 수신자를 따라갑니다.
다른 예시
grep -i error /path/to/yourfile.log | mail -s "Errors from script execution" [email protected]
더 많은 옵션을 확인하세요 man mail
.
cron을 통해 스크립트를 실행하는 경우 또 다른 옵션은 cron이 스크립트의 출력을 자동으로 이메일로 보내도록 하는 것입니다. MAILTO
다음과 같이 crontab에 옵션을 추가하십시오 .
[email protected]
스크립트가 실행될 때마다 stdout의 출력이 포함된 이메일을 받게 됩니다.
보안에 있어서 이메일을 보내는 것과 받는 것은 완전히 다른 것입니다. 수신 메일 서버를 실행하지 않고도 서버에서 이메일을 보낼 수 있습니다. 이 서버를 통해 이메일을 받을 필요가 없다면 smtp 데몬을 실행하거나 방화벽을 통해 수신 포트 25(SMTP)에 대한 액세스를 차단하지 마세요.