일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 사무실
- 티스토리챌린지
- Finale2005
- 오픈수세
- 피날레
- 리눅스
- synology
- 시벨리우스5
- openSUSE 11.2
- sibelius5
- 피날레2005
- MIDI
- 미디
- sibelius4
- 오블완
- 오픈수세 11.1
- Finale2009
- 사보
- 피날레2009
- 시벨리우스4
- 시놀로지
- 시벨리우스
- 수세
- 오픈소스
- 네트워크
- 오픈수세 11.2
- OpenSuSE
- Nas
- Linux
- 나스
Archives
- Today
- Total
오브리닷넷(Obbli.net)
우분투에서 certbot 인증서 갱신 자동화 및 메일 발송 본문
반응형
certbot 인증서 갱신을 root 크론과 msmtp로 자동 메일 발송하는 방법
우분투 서버에서 certbot(SSL 인증서) 자동 갱신 결과를 정기적으로 이메일로 받아보고 싶다면, 이 가이드대로 자동화 구성을 할 수 있다.
1. 환경 및 권장 사항
- 인증서 갱신은 반드시 root 권한에서 실행해야 한다. (
/var/log/letsencrypt
등 certbot 내부 디렉토리의 권한 때문) - crontab도 root 크론탭(sudo crontab -e)에 등록해야 한다.
- 메일 발송은 msmtp 및 특정 일반 계정의
~/.msmtprc
설정을 root가 직접 참조하도록 한다. - 본 예시에서는 서버의 사용자 계정명을
serveradmin
, 알림용 대표 메일을yourid@samplemail.com
식으로 예시한다.
2. msmtp 설정(~/.msmtprc 작성)
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
account daum
host smtp.daum.net
port 587
tls_starttls on
user yourid@daum.net
from yourid@daum.net
password 앱비밀번호입력
logfile /home/serveradmin/.msmtp.log
account default : daum
- 실제 사용하는 SMTP 서버(네이버, Gmail 등) 환경에 맞게 작성한다.
- 여기서는 daum을 써보았다.
- 계정 메일·비밀번호 등은 모두 본인 환경에 맞게 수정한다.
- MS 계정은 너무나 까다로워서 추천 안함.
- 구글, 네이버, 다음은 2차 인증을 통해 앱 비밀번호 같은것을 생성해서 사용해야 한다.
3. certbot_mail_report.sh 작성
아래 스크립트를 /home/serveradmin/certbot_mail_report.sh
로 저장한 뒤 실행 권한을 준다.
#!/bin/bash
export MSMTP_CONFIG=/home/serveradmin/.msmtprc
echo "스크립트 시작: $(date)" >> /home/serveradmin/cron_debug.log
whoami >> /home/serveradmin/cron_debug.log
HOSTNAME=$(hostname)
NOW=$(date "+%Y-%m-%d %H:%M")
echo "certbot 실행: $(date)" >> /home/serveradmin/cron_debug.log
OUTPUT=$(/usr/bin/certbot renew --apache --quiet 2>&1)
echo "certbot 결과: $OUTPUT" >> /home/serveradmin/cron_debug.log
if [ -z "$OUTPUT" ]; then
STATUS="✅ 인증서 변경 사항 없음(정상)"
elif echo "$OUTPUT" | grep -qi 'failed\|error'; then
STATUS="❗ 인증서 자동갱신 오류 발생!"
elif echo "$OUTPUT" | grep -qi 'no renewals were attempted'; then
STATUS="✅ 만료된 인증서 없음(정상)"
elif echo "$OUTPUT" | grep -qi 'congratulations'; then
STATUS="✅ 인증서 갱신 성공"
else
STATUS="⚠ 확인 필요: 예상치 못한 결과"
fi
BODY="[$NOW][$HOSTNAME] $STATUS\n\n--- certbot 실행 결과 ---\n$OUTPUT"
SUBJECT_RAW="[$HOSTNAME][SSL] 인증서 갱신 요약 리포트 ($NOW)"
SUBJECT_ENC=$(printf "%s" "$SUBJECT_RAW" | iconv -t utf-8 | base64 | tr -d '\n' | sed 's/.*/=?UTF-8?B?&?=/')
{
printf "Subject: %s\n" "$SUBJECT_ENC"
printf "MIME-Version: 1.0\n"
printf "Content-Type: text/plain; charset=UTF-8\n\n"
printf "%s\n" "$BODY"
} | msmtp --file=/home/serveradmin/.msmtprc --account=mainmail yourid@samplemail.com
실행권한을 추가한다:
chmod +x /home/serveradmin/certbot_mail_report.sh
4. root 크론탭에 등록
반드시 root로 크론탭을 편집해 다음과 같이 등록한다.
sudo crontab -e
매주 금요일 오전 10시에 자동 실행하려면 아래 한 줄을 추가한다:
0 10 * * 5 /home/serveradmin/certbot_mail_report.sh >> /home/serveradmin/certbot_mail_report.log 2>&1
5. 동작 및 진단
- 메일 수신함에서 매주 인증서 갱신 결과 및 certbot 로그까지 상세하게 받아볼 수 있다.
/home/serveradmin/cron_debug.log
,/home/serveradmin/certbot_mail_report.log
,/home/serveradmin/.msmtp.log
를 통해 각 단계의 상태를 실시간 진단할 수 있다.- certbot 인증서 만료, 갱신, 실패 등 상황에 따라 메일로 자동 안내를 받는다.
6. 트러블 슈팅
- certbot은 반드시 root 권한에서만 정상 작동한다. (권한 부족 시 실패)
- msmtp가 "account not found" 등 오류를 내면
--file=/home/serveradmin/.msmtprc
옵션을 반드시 붙인다. - 제목이 깨질 때는 스크립트의 MIME 인코딩 코드를 확인한다.
반응형
'IT > 사용팁' 카테고리의 다른 글
Perplexity API, VS Code에서 갑자기 401 오류? (월 크레딧/키/결제/키 관리) (1) | 2025.09.14 |
---|---|
VSCode에서 파일 및 폴더 비교(diff) 기능 활용법 (0) | 2025.09.14 |
VS code + Continue + Perplexity(feat. LM Studio) 설정 (0) | 2025.09.03 |
로지텍 무선 마우스(MX Master 3s) 무선 끊길때 (0) | 2025.07.06 |
대량의 텍스트를 파워포인트 (대사)자막으로 만들기(2025-MS오피스) (0) | 2025.06.17 |