◆ Plugin 「Managesieve」
「Managesieve」은 RoundCube 1.6.7 버전에 기본적으로 설치되어 Plugin입니다. 「Sieve」라는 단어는 한국어로 체(가루/물 등을 거르는 데 쓰는 부엌 도구)를 의미합니다. 즉 라운드큐브 메일서비스에서는 수신받은 메일을 특정 메일함으로 「자동분류」를 해주는 기능을 말합니다. 해당 플러그인을 사용하면 자동분류뿐만 아니라 「자리비움(부재중 응답)」과 「자동전달(다른 이메일주소로 전달)」도 사용이 가능합니다. 웹메일서비스를 제공하는 솔루션이라면 편의상 많이 채용하는 기술입니다. 특히 자동분류는 바이어(Buyer) 업체나 상황에 따라 메일함 분류를 할 수 있어 업무효율을 높일 수 있는 좋은 기능입니다. RoundCube# 플러그인에서는 해당 이름으로 검색되지 않습니다. RoundCube 버전에 맞게 바로 적용이 가능하도록 개발을 한 것으로 보입니다.
또한 이 기능을 완전히 활용하기 위해서는 「Dovecot」 서비스의 「Pigeonhole project」와 관련이 있습니다. 사용자가 「Sieve」 언어로 지정된 스크립트를 작성하여 들어오는 메시지를 필터링할 수 있도록 지원합니다.「RFC 5228 (이메일 필터링 언어)」 문서 참고
① ManageSieve 플러그인 활성화 하기
[root@mail~]# vim /var/www/html/roundcube/config/config.inc.php [설정 파일 열기]
※ DocumentRoot 본인 RoundCube 설치 경로 ~/roundcube/config/config.inc.php
◈ PHP 코드 중
// ----------------------------------
// PLUGINS
// ----------------------------------
// List of active plugins (in plugins/ directory)
$config['plugins'] = array('virtuser_query', 'managesieve'); [추가]
※ 해당 설정 라인에 「managesieve」 플러그인 추가 / 구분자 쉼표 콤마 「 , 」와 양쪽 따옴표 「 ' ' 」 사용으로 문법에 문제만 없다면 띄어쓰기는 문제없습니다.
② ManageSieve 플러그인 환경 설정 파일 복사 및 구성
[root@mail ~]# cd /var/www/html/roundcube/plugins/managesieve/ [경로 이동]
[root@mail managesieve]# cp -arp config.inc.php.dist config.inc.php [샘플 파일 복사]
※ config.inc.php.dist 「환경 설정 샘플 파일」
[root@mail managesieve]# vim config.inc.php [환경 설정 열기]
◈ PHP 코드 중 [전부 기본값으로 하고 특정 값만 변경]
// Managesieve server host (and optional port). Default: localhost.
$config['managesieve_host'] = 'localhost'; [※ 기본 설정]
// Enables separate management interface for vacation responses (out-of-office)
$config['managesieve_vacation'] = 1; [※ 부재중 설정, 0 → 1 변경]
// Enables separate management interface for setting forwards (redirect to and copy to)
$config['managesieve_forward'] = 1; [※ 자동 전달, 0 → 1 변경]
// Enables debugging of conversation with sieve server. Logs it into <log_dir>/sieve
$config['managesieve_debug'] = true; [※ 로그 기록, false → true 활성화]
※ 기본 경로는 ~/roundcube/logs/sieve.log 로그가 쌓임
※ 자동전달「Forwarding」 기능에 대해서
자동전달은 수신받은 메일을 완전히 다른 메일서버의 주소로 전달을 가능하게 합니다. 하지만 여기서 하나 생각해야 되는 부분이 만약 기업메일로 중요한 업무를 보는 사용자라면 문서나 개인정보 같은 게 외부로 유출이 될 수 있는 여지가 있습니다. 또한 수신받은 메일이 스팸메일이라면 다른 서버로 스팸을 발송하는 것과 똑같은 역할을 하게 됩니다. (발송자의 메일주소나 공격자 IP로 차단될 수 있음) / 보안팀에서는 자동전달이 있으면 보안취약으로 간주할 수 있습니다. 순수 개인서버 사용의 목적이라면 적용해도 되지만 기업입장에서는 적용이 필요한지 신중히 검토해 보시기 바랍니다. (유료 솔루션도 마찬가지)
③ Dovecot 「pigeonhole(sieve)」 패키지 설치 및 환경설정
3-1 pigeonhole(sieve) 패키지 설치
▣ CentOS/RHEL/Rocky 계열
[root@mail ~]# dnf(yum) install dovecot-pigeonhole [필자는 Rocky Linux 8.10]
▣ Debian/Ubuntu 계열
[root@mail ~]# sudo apt install dovecot-core dovecot-sieve dovecot-managesieved
[root@mail ~]# cd /etc/dovecot/conf.d/ [경로 이동]
[root@mail ~]# ls -al | grep -i sieve [설정 파일 생성 확인]
3-2 설정 파일 수정
모든 내용은 Doc.Dovecot 공식 「매뉴얼」 참고
[root@mail ~]# vim /etc/dovecot/conf.d/15-lda.conf [①번째 설정 파일]
◈ 설정 파일 내용
45 protocol lda {
46 # Space separated list of plugins to load (default is global mail_plugins).
47 mail_plugins = $mail_plugins sieve
48 }
※ 「#」주석 제거 및 「{ }」 중괄호 구문 처리 주의, 위 설정은 Dovecot LDA 또는 LMTP를 사용하여 수신 메일을 사용자 메일함(사서함)으로 전달해야 하므로 Pigeonhole Sieve 플러그인을 활성화합니다.
※ LDA/LMTP 둘 다 비슷한 기능을 하며, 필자는 LDA로 처리 : LDA는 MTA에서 메일을 가져와 사용자의 메일함(사서함)으로 전달하는 메일 배달 에이전트로, Dovecot 인덱스 파일을 최신 상태로 유지합니다. 구성이 쉽고 더 나은 성능을 제공하므로 LMTP 상위 호환이라고 봐도 될 것 같습니다.
[root@mail ~]# vim /etc/dovecot/conf.d/20-managesieve.conf [②번째 설정 파일]
◈ 설정 파일 내용
# Uncomment to enable managesieve protocol:
6 protocols = $protocols sieve [프로토콜 활성화를 위해 「#」 주석 제거]
8 # Service definitions [서비스 정의, sieve 연결 응답 포트 설정]
10 service managesieve-login {
11 inet_listener sieve {
12 port = 4190
13 }
29 }
31 service managesieve {
32 # Max. number of ManageSieve processes (connections)
33 #process_limit = 1024
34 }
※ 최대 ManageSieve 프로세스 수(연결), 설정은 하지 않고 서비스 정의만 처리, 이런 설정들은 실제 메일서비스 사용량(부하율)에 따라 조정이 필요
38 protocol sieve {
39 # Maximum ManageSieve command line length in bytes. ManageSieve usually does
40 # not involve overly long command lines, so this setting will not normally
41 # need adjustment
42 managesieve_max_line_length = 65536
※ ManageSieve 명령줄 최대 길이 설정으로 지나치게 긴 명령줄을 포함하지 않으므로 이 설정은 일반적으로 조정이 필요함
66 # To fool ManageSieve clients that are focused on CMU's timesieved you can
67 # specify the IMPLEMENTATION capability that Dovecot reports to clients.
68 # For example: 'Cyrus timsieved v2.2.13'
69 managesieve_implementation_string = Dovecot Pigeonhole
84 }
※ 해당 내용은 정확히 이해되지 않음... managesieve 구현 문자열 처리를 지정하는 것으로 보이는데 필터(자동 분류) 스크립트를 가져오기 위한 기능으로 추측됨
[root@mail ~]# vim /etc/dovecot/conf.d/90-sieve.conf [③번째 설정 파일]
◈ 설정 파일 내용
24 plugin {
25 # The location of the user's main Sieve script or script storage. The LDA
26 # Sieve plugin uses this to find the active script for Sieve filtering at
27 # delivery.
39 #sieve = file:~/sieve;active=~/.dovecot.sieve [기존 설정 「#」 주석 처리]
40 sieve = /home/vmail/%d/%n/Maildir/sieve/dovecot.sieve [저장 경로 설정]
206 }
※ 사용자의 기본 Sieve 스크립트 또는 스크립트 저장소의 위치입니다. LDA Sieve 플러그인은 이를 사용하여 전달 시 Sieve 필터링을 위한 활성 스크립트를 찾습니다. 사용자가 필터를 설정한 환경설정「자동분류/부재중/자동전달」을 저장하는 경로를 지정 및 불러오는 역할
※ Dovecot 설정파일 「10-mail.conf」에서 설정했던 「mail_location = maildir」 경로와 동일하게 설정해 주면 됩니다. 사용자가 필터 설정을 저장하면 「/home/vmail/Domain/USER/Maildir/」 경로에 「sieve」 폴더가 생기며 설정파일이 생성됩니다.
3-3 Dovecot 서비스 재시작
[root@mail ~]# systemctl restart dovecot [서비스 재시작]
[root@mail ~]# systemctl status dovecot [서비스 상태 확인]
Active: active (running)
[root@mail ~]# netstat -nlp | grep 4190 [sieve 응답 포트 확인]
[root@mail ~]# telnet localhost 4190 [sieve 서비스 연결 확인]
OK "Dovecot ready." 정상 응답 [※ 자세한 메시지는 스크린샷으로 대체]
④ 기능 테스트
4-1 자동분류 테스트
※ 자동분류는 등록된 순서대로 처리를 합니다. 사용자들이 가장 많이 실수하는 부분이 많이 등록될수록 분류조건이 중복되거나 잘못된 조건으로 인해 다른 폴더로 이동되거나 메일이 중복 또는 삭제 등의 문제가 발생할 수 있습니다. 자동분류는 신중히 등록하시길 바랍니다.
4-2 부재중 응답 테스트
4-3 자동전달 테스트
[root@mail log]# tail -f /var/log/dovecot.log [실시간 로그 확인]
lda(설정 메일주소)Info: sieve: msgid=<메시지ID>:
redirect action: forwarded to <전달 메일주소>
lda(설정 메일주소)Info: sieve: msgid=<메시지ID>:
stored mail into mailbox 'INBOX'
※ 「'INBOX' (받은 편지함)」에 수신된 메일을 LDA, SIEVE 프로토콜을 통해 사용자 환경설정 필터(managesieve)를 확인 후 전달 메일주소로 자동전달(Forwarding) 처리한 내역을 알 수 있습니다.
일단 작동되도록만 구현을 해보았습니다. 자료를 모으고 테스트하다 보니 생각보다 옵션이 너무 많아서 변수가 많을 것 같아 기본 구성으로만 진행하였습니다. ※ 모든 내용은 직접 테스트 및 확인한 내용만 업로드합니다. 오타나 잘못된 정보가 포함되어 있다면 지적 및 정보 공유 감사합니다.
P.S.
[root@mail log]# cd ~/roundcube/plugins/managesieve/localization/
[root@mail localization]# ls -al | grep ko
-rw-rw-r-- 1 apache apache 15300 Jul 9 15:48 ko_KR.inc [한국어 설정 파일]
※ 해당 파일을 통해 메뉴이름이나 상태 메시지를 커스텀할 수 있습니다.
'◈『Open(Source) Solution』 > 메일서버(RoundCube)' 카테고리의 다른 글
RoundCube - Plugins 「persistent login」 로그인 유지 적용 (0) | 2024.07.15 |
---|---|
RoundCube - Plugins 「newmail_notifier」 새 메일 알림 적용 (2) | 2024.07.05 |
RoundCube - Plugins 「Composer」 PHP 의존성 관리 도구 사용 방법 (4) | 2024.06.14 |
RoundCube - Plugins 「Password」 비밀번호 변경 적용 [feat. MariaDB] (2) | 2024.06.03 |
Rocky Linux - 메일서버(Postfix) RBL 정책 적용 (2) | 2022.07.07 |