이메일 관리 · 3 min read · Jan 01, 2026

원격 서버에서 getmail로 이메일 가져오기 (Debian Etch)

원격 서버에서 getmail로 이메일 가져오기 (Debian Etch)

버전 1.1
저자: Falko Timme

Getmail은 원격 서버에서 이메일을 가져오는 프로그램입니다. fetchmail과 매우 유사하지만 더 유연합니다. 예를 들어, Postfix와 같은 MTA 없이도 메일을 Maildir 또는 mbox 메일함으로 직접 배달하도록 구성할 수 있지만, 원한다면 MTA를 통해 메일을 파이프할 수도 있습니다. Getmail은 SpamAssassin 및 ClamAV와 같은 필터를 사용하여 메일을 스캔할 수 있으며, 특정 일수 후에만 원래 서버에서 메일을 삭제하도록 getmail에 지시할 수도 있습니다.

이것이 당신에게 작동할 것이라는 보장은 하지 않습니다!

1 사전 참고

저는 로컬 이메일 주소 [email protected]를 가진 로컬 사용자 falko가 있는 Debian Etch 시스템에서 getmail을 테스트했습니다.

2 getmail 설치

getmail을 설치하기 위해서는 루트로 다음을 실행하면 됩니다.

apt-get install getmail4

3 getmail 구성

Getmail은 사용자별 구성 파일을 통해 구성할 수 있으며, 그 사용자가 getmail을 실행할 수 있습니다. getmail이 자동으로 실행되도록 하려면 해당 사용자에 대한 cron 작업을 생성할 수 있습니다.

이 장에서는 사용자가 root가 아닌 falko로 로그인했다고 가정합니다!

Getmail은 구성 파일 ~/.getmail/getmailrc를 찾고 있으므로, 먼저 권한 0700으로 ~/.getmail 디렉토리를 생성해야 합니다:

mkdir -m 0700 ~/.getmail

그런 다음 ~/.getmail/getmailrc 구성 파일을 생성합니다. getmailrc 파일에는 최소한 하나의 [retriever] 섹션과 하나의 [destination] 섹션이 있어야 합니다.

vi ~/.getmail/getmailrc

| [retriever] type = SimplePOP3Retriever server = pop.someprovider.tld username = [email protected] password = secret [destination] type = Maildir path = ~/Maildir/ |

위의 예는 falko가 pop.someprovider.tld 서버에서 사용자 이름 [email protected]와 비밀번호 secret을 가진 메일 계정을 가지고 있으며, ~/Maildir/가 그의 Maildir 디렉토리임을 가정합니다.

이것만으로도 getmail을 구성하기에 충분합니다. falko는 이제 다음을 실행하여 원격 서버에서 이메일을 가져올 수 있습니다:

getmail

물론, falko는 몇 분마다 수동으로 가져오기를 시작하고 싶지 않으므로, 그를 위해 cron 작업을 생성합니다. 여전히 사용자 falko로 다음을 실행합니다:

crontab -e

그리고 다음과 같은 cron 작업을 생성합니다(매 5분마다 getmail을 시작하는 작업):

| */5 * * * * /usr/bin/getmail &> /dev/null |

이제 falko가 이 서버에 Maildir 계정이 아니라 mbox 계정을 가지고 있다고 가정해 보겠습니다 (/var/mail/falko). 우리가 해야 할 일은 ~/.getmail/getmailrc의 [destination] 섹션을 다음과 같이 수정하는 것입니다:

vi ~/.getmail/getmailrc

| [retriever] type = SimplePOP3Retriever server = pop.someprovider.tld username = [email protected] password = secret [destination] type = Mboxrd path = /var/mail/falko |

다음 예에서는 원격 서버에서 가져온 이메일을 Postfix와 같은 MTA를 통해 파이프하려고 합니다(이미 Postfix가 설치되어 있고 작동 중이라고 가정합니다). Postfix는 메일을 Maildir 또는 mbox로 배달해야 하는지 처리할 수 있으며, amavisd-new를 통해 스팸 및 바이러스 스캐너를 호출할 수도 있습니다.

vi ~/.getmail/getmailrc

| [retriever] type = SimplePOP3Retriever server = pop.someprovider.tld username = [email protected] password = secret [destination] type = MDA_external path = /usr/sbin/sendmail arguments = ("-i", "-bm", "[email protected]") unixfrom = true |

(보시다시피, 우리는 getmail에 falko의 로컬 이메일 주소가 [email protected]임을 알려줍니다.)

arguments 줄의 -i 스위치는 중요합니다(힌트를 주신 Chris Moules에게 감사드립니다):

*문제는 일부 메일이 sendmail에 배달될 때 잘리게 된다는 것입니다. 이는 소스에서 가져온 메시지 본문에 단일 점(.)이 있는 줄이 포함될 때 발생할 수 있습니다. SMTP에서는 이것이 메시지의 끝을 나타내는 데 사용됩니다. 명령줄에서 sendmail을 호출할 때 기본적으로 메시지는 EOF 또는 단일 점에서 끝납니다.

Postfix sendmail 매뉴얼 페이지 인용:

기본적으로 Postfix sendmail(1)은 EOF까지 또는 단일 점(.) 문자만 있는 줄을 읽을 때까지 표준 입력에서 메시지를 읽고 배달을 준비합니다.


sendmail 매뉴얼 페이지 인용:


플래그가 없으면 sendmail은 표준 입력을 끝까지 읽거나 단일 점으로 구성된 줄을 읽고, 그곳에서 발견된 메시지의 복사본을 나열된 모든 주소로 보냅니다.


클라이언트로부터 ‘손상된‘, ‘누락된‘ 또는 ‘잘린’ 이메일에 대한 알림을 받았습니다. 서버의 메시지와 그들의 메일 시스템에 있는 메시지를 살펴본 결과 문제가 분명했습니다.

약간의 조사를 통해 로컬 sendmail이 ‘-i’ 옵션으로 호출되어야 한다는 것을 알게 되었습니다:

Postfix sendmail 매뉴얼 페이지 인용:

-i 표준 입력에서 메시지를 읽을 때, 단일 점(.) 문자로만 구성된 줄을 입력의 끝으로 취급하지 않습니다.


이는 sendmail이 메시지가 제출될 때까지 파일의 끝까지 기다리게 만듭니다.*

-i 스위치를 다음과 같은 이메일로 테스트할 수 있습니다:

---
Four:
....
Three:
...
Two:
..
One:
.
---

3.1 옵션

~/.getmail/getmailrc에 [options] 섹션을 추가하여 getmail의 기본 동작을 변경할 수도 있습니다. 예를 들어 다음과 같이:

vi ~/.getmail/getmailrc

| [...] [options] verbose = 1 read_all = false delete = true message_log_syslog = true |

위의 옵션은 getmail에 가져온 메시지에 대한 메시지를 인쇄하고, 새 메시지만 가져오고, 가져온 후 원격 서버에서 메시지를 삭제하며, syslog에 기록하도록 지시합니다.

10일 이상 된 메일만 삭제하고 싶다면 [options] 섹션을 다음과 같이 변경할 수 있습니다:

vi ~/.getmail/getmailrc

| [...] [options] verbose = 1 read_all = false delete_after = 10 message_log_syslog = true |

모든 사용 가능한 옵션에 대한 자세한 내용은 http://pyropus.ca/software/getmail/configuration.html#conf-options에서 확인할 수 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.