이메일 관리 · 5 min read · Sep 08, 2025
Fetchmail을 사용하여 Debian에서 원격 서버에서 이메일 가져오기

Fetchmail은 원격 서버에서 이메일을 가져오는 프로그램입니다. 다섯 개의 서로 다른 서버에 다섯 개의 이메일 계정이 있다고 상상해 보십시오. 물론 각 서버에 연결하여 이메일을 가져오고 싶지는 않을 것입니다. 이때 fetchmail이 필요합니다. Linux 서버에 사용자 계정이 있다면 fetchmail을 사용하여 원격 서버에서 이메일을 다운로드하고 단 하나의 메일박스(당신의 Linux 사용자 메일박스)에 넣을 수 있습니다. 그곳에서 이메일 클라이언트(예: Thunderbird 또는 Outlook)를 사용하여 이메일을 검색할 수 있습니다.
또는 스팸 및 바이러스 필터링을 하지 않는 제공업체에 이메일 계정이 있다고 가정해 보십시오. 이 경우 fetchmail을 사용하여 이메일을 자신의 서버로 다운로드하고 스팸 및 바이러스 필터(예: SpamAssassin 및 ClamAV)를 통해 이메일을 다운로드하기 전에 처리할 수 있습니다.
1 사전 참고
이메일을 받을 수 있는 시스템 사용자가 있는 Linux 서버가 필요합니다. 즉, Postfix 또는 Sendmail과 같은 MTA가 시스템에 설치되어 있어야 합니다. 그렇지 않으면 fetchmail이 작동하지 않습니다. fetchmail은 다운로드한 이메일을 MTA(예: Postfix, Sendmail 등)에 전달하려고 시도하며, MTA는 이메일을 사용자의 메일박스로 전달합니다(이 과정에서 스팸 및 바이러스 스캔을 포함하도록 시스템을 구성할 수 있지만, 이 튜토리얼에서는 다루지 않습니다).
이 튜토리얼에서는 falko와 till이라는 두 사용자가 있는 Debian 시스템을 사용합니다.
2 fetchmail 설치
fetchmail을 설치하려면 다음 명령어를 실행하면 됩니다.
apt install fetchmail3 fetchmail 구성
fetchmail을 구성하는 방법에는 두 가지가 있습니다. 전역 구성 파일로 데몬으로 실행하도록 설정하거나, 사용자별 구성 파일과 함께 fetchmail을 실행하는 cron 작업을 생성할 수 있습니다. 두 가지 방법을 모두 설명하겠습니다.
3.1 전역 구성 파일로 fetchmail을 데몬으로 실행
fetchmail을 데몬으로 실행하려면 /etc/default/fetchmail을 편집하고 START_DAEMON을 yes로 설정해야 합니다:
nano /etc/default/fetchmail# 이 파일은 fetchmail을 위한 몇 가지 변수를 선언하는 데 사용됩니다
#
# 로컬화된 로그 메시지를 원하지 않는 경우 다음의 주석을 제거하십시오
# export LC_ALL=C
# fetchmail을 시작할지 여부를 선언하십시오. 'yes' 또는 'no'
START_DAEMON=yes다음으로, 구성 파일 /etc/fetchmailrc를 생성해야 합니다. 이 파일이 없으면 fetchmail 데몬이 시작되지 않습니다. 이 파일에서는 fetchmail 데몬이 어떻게 동작해야 하는지와 외부 이메일 계정에서 이메일을 가져오기 위해 fetchmail이 알아야 할 세부 정보를 지정할 수 있습니다.
falko가 이메일을 가져오고자 하는 두 개의 이메일 계정이 있다고 가정해 보겠습니다:
- 첫 번째 계정: 서버 pop.someprovider.tld, 프로토콜 POP3, 사용자 이름 [email protected] (예, 이 경우 사용자 이름은 이메일 주소입니다), 비밀번호 secret.
- 두 번째 계정: 서버 mail.otherprovider.tld, 프로토콜 POP3, 사용자 이름 ftimme, 비밀번호 verysecurepassword.
till은 하나의 이메일 계정을 가지고 있습니다:
- 서버 mailin.tillsprovider.tld, 프로토콜 POP3, 사용자 이름 tbrehm, 비밀번호 iwonttellyou.
따라서 우리의 파일 /etc/fetchmailrc는 다음과 같이 보일 수 있습니다:
nano /etc/fetchmailrc# /etc/fetchmailrc 시스템 전체 데몬 모드용
# 이 파일은 chmod 0600, 소유자 fetchmail이어야 합니다
set daemon 300 # 5분마다 풀링
set syslog # syslog 시설을 통한 로그
set postmaster root
set no bouncemail # 4xx 오류로 인한 손실 방지
# 반면에 5xx 오류는 더 위험해집니다...
##########################################################################
# 풀링할 호스트
##########################################################################
# 기본값 ===============================================================
# bouncemail과 함께 사용하는 것이 훨씬 안전하므로 antispam을 -1로 설정합니다.
defaults:
timeout 300
antispam -1
batchlimit 100
poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret" is falko here
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall
poll mailin.tillsprovider.tld protocol POP3 user "tbrehm" there with password "iwonttellyou" is till here keep파일의 시작 부분에는 프로그램의 작동을 제어하는 몇 가지 전역 옵션이 있습니다. 위의 옵션의 의미는 다음과 같습니다:
- set daemon: 초 단위로 백그라운드 풀 간격을 설정합니다.
- set syslog: syslog를 통해 오류 로그를 기록합니다.
- set postmaster: 마지막 수신자 이름을 지정합니다(기본값: fetchmail을 실행하는 사용자, root 사용자에 의해 실행될 경우 “postmaster”).
- set no bouncemail: 오류 메일을 로컬 포스트마스터에게 전달합니다(위의 “postmaster” 전역 옵션에 따라).
그런 다음 서버 및 사용자 옵션이 있습니다. 이들은 poll로 시작하는 줄에 함께 들어갑니다. 각 poll 줄에 대해 동일한 옵션이 있는 경우, defaults:로 시작하는 섹션에서 해당 옵션을 지정할 수도 있습니다(예: timeout, antispam 및 batchlimit).
- timeout: 초 단위의 서버 비활성 시간 초과(기본값 300).
- antispam: 어떤 SMTP 반환이 스팸 정책 차단으로 해석되는지를 지정합니다.
- batchlimit: 연결이 의도적으로 끊어지고 재구성되기 전에 SMTP 리스너에 전송될 최대 메시지 수를 지정합니다(기본값 0, 즉 제한 없음).
poll 줄은 자명합니다. fetchmail은 falko의 외부 이메일 계정에서 이메일을 가져와 하나의 계정에 넣습니다.
poll 줄의 끝이 다르다는 것을 알 수 있습니다(예: nofetchall(기본값), fetchall, keep, nokeep). 그 의미는 다음과 같습니다:
- nofetchall: 새 메시지만 가져옵니다(기본값). 다른 것이 지정되지 않으면(예: fetchall, keep) nofetchall을 의미합니다.
- fetchall: 본 메시지 여부와 관계없이 모든 메시지를 가져옵니다.
- keep: 본 메시지를 서버에서 삭제하지 않습니다.
- nokeep: 본 메시지를 서버에서 삭제합니다.
모든 사용 가능한 구성 설정에 대해 자세히 알아보려면 다음을 참조하십시오:
man fetchmail/etc/fetchmailrc는 600 권한을 가져야 하며 fetchmail 사용자에게 소유되어야 하므로 다음을 수행합니다:
chmod 600 /etc/fetchmailrc
chown fetchmail /etc/fetchmailrc마지막으로 fetchmail을 시작할 수 있습니다:
/etc/init.d/fetchmail start이제 fetchmail은 이메일을 다운로드하고 falko와 till의 메일박스에 넣어야 합니다(이때 MTA를 사용합니다). 이는 설정된 daemon 초마다 반복됩니다.
3.2 사용자별 구성 파일을 사용하고 cron을 통해 fetchmail 실행
전역 구성 파일을 사용하는 대신 사용자별 구성 파일을 사용할 수 있습니다. 이러한 파일은 이름이 .fetchmailrc여야 하며 사용자의 홈 디렉토리에 위치해야 합니다.
이제 사용자 falko를 위해 이러한 파일을 생성하고자 합니다. root가 아닌 falko로 로그인했는지 확인하십시오! 그런 다음 다음을 수행합니다:
cd ~/
vi .fetchmailrcset postmaster falko
set bouncemail
poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret"
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" fetchall파일은 3.1장에 있는 /etc/fetchmailrc 파일과 매우 유사하게 보이지만, 이제는 is falko here라는 문구를 더 이상 사용하지 않는 것을 알 수 있습니다( .fetchmailrc는 falko의 홈 디렉토리에 있으므로 fetchmail은 이메일이 falko에게 전달되어야 함을 알고 있습니다). 물론 여전히 is falko here를 사용할 수 있으므로 파일은 다음과 같이 보일 수도 있습니다:
set postmaster falko
set bouncemail
poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret" is falko here
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall모든 사용 가능한 구성 설정에 대해 자세히 알아보려면 다음을 참조하십시오:
man fetchmail.fetchmailrc는 600 권한을 가져야 하므로 falko만 읽고 쓸 수 있습니다:
chmod 600 ~/.fetchmailrc그게 전부입니다. 이제 falko는 다음 명령어를 실행하여 검색 프로세스를 시작할 수 있습니다:
fetchmail또는
fetchmail -v이 명령어는 진행 상황을 보여줍니다.
물론 falko는 몇 분마다 수동으로 검색을 시작하고 싶지 않으므로, 그를 위해 cron 작업을 생성합니다. 여전히 falko 사용자로서, 다음을 실행합니다:
crontab -e그리고 다음과 같은 cron 작업을 생성합니다(이는 fetchmail을 5분마다 시작합니다):
*/5 * * * * /usr/bin/fetchmail &> /dev/null4 링크
- Debian: http://www.debian.org
- Fetchmail: http://fetchmail.berlios.de
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.