본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 11. 27. · 4 Views
Roundcube 웹메일 인터페이스 완벽 가이드
Docker 컨테이너 기반으로 Roundcube 웹메일을 구축하고, Nginx 리버스 프록시부터 플러그인 관리, 테마 커스터마이징까지 전체 과정을 다룹니다. 초급 개발자도 쉽게 따라할 수 있는 실무 중심 가이드입니다.
목차
1. Roundcube 컨테이너 설정
김개발 씨는 스타트업에서 일하는 신입 개발자입니다. 어느 날 팀장님이 다가와 말했습니다.
"우리 회사도 이제 자체 이메일 시스템이 필요해요. Roundcube로 웹메일 서버 하나 구축해 볼래요?" 김개발 씨는 Roundcube가 뭔지도 모른 채 검색창을 열었습니다.
Roundcube는 PHP 기반의 오픈소스 웹메일 클라이언트입니다. 마치 Gmail이나 Outlook 웹 버전처럼 브라우저에서 이메일을 주고받을 수 있게 해주는 프로그램입니다.
Docker 컨테이너를 활용하면 복잡한 설치 과정 없이 몇 분 만에 웹메일 환경을 구축할 수 있습니다.
다음 코드를 살펴봅시다.
# docker-compose.yml - Roundcube 컨테이너 설정
version: '3.8'
services:
roundcube:
image: roundcube/roundcubemail:latest
container_name: roundcube-webmail
restart: unless-stopped
ports:
- "9000:80"
environment:
# 기본 메일 서버 설정
ROUNDCUBEMAIL_DEFAULT_HOST: mail.example.com
ROUNDCUBEMAIL_DEFAULT_PORT: 993
ROUNDCUBEMAIL_SMTP_SERVER: mail.example.com
ROUNDCUBEMAIL_SMTP_PORT: 587
volumes:
- ./roundcube-data:/var/www/html/config
- ./roundcube-temp:/tmp/roundcube-temp
김개발 씨는 Docker가 뭔지는 알고 있었습니다. 컨테이너 기술이라는 것, 애플리케이션을 격리된 환경에서 실행할 수 있다는 것 정도는 들어본 적이 있었죠.
하지만 직접 무언가를 구축해본 적은 없었습니다. 선배 개발자 박시니어 씨가 옆자리에서 힘겹게 검색하는 김개발 씨를 발견했습니다.
"뭐 하고 있어요?" "아, Roundcube라는 걸로 웹메일 서버를 만들어야 하는데요..." 박시니어 씨가 의자를 끌고 다가왔습니다. "Roundcube는 쉽게 말해서 웹에서 돌아가는 이메일 프로그램이에요.
Outlook 같은 프로그램을 설치하지 않아도 브라우저만 있으면 메일을 확인할 수 있게 해주는 거죠." 김개발 씨가 고개를 끄덕였습니다. Gmail 웹 버전 같은 거라고 생각하면 되는 건가요?
"맞아요! 근데 Gmail은 구글 서버에 있잖아요.
Roundcube는 우리가 직접 서버에 설치해서 운영하는 거예요. 자체 메일 서버를 갖고 싶을 때 사용하는 거죠." 그렇다면 이걸 어떻게 설치해야 할까요?
예전에는 PHP를 설치하고, Apache를 설정하고, 데이터베이스를 연결하고... 정말 복잡한 과정을 거쳐야 했습니다.
하지만 지금은 Docker가 있습니다. Docker 컨테이너는 마치 이사할 때 쓰는 포장 박스와 같습니다.
필요한 모든 것이 박스 안에 담겨 있어서, 어디로 옮기든 그대로 사용할 수 있습니다. Roundcube Docker 이미지에는 PHP, 웹 서버, Roundcube 애플리케이션이 모두 포함되어 있습니다.
위의 docker-compose.yml 파일을 살펴보겠습니다. image 항목에서 공식 Roundcube 이미지를 지정합니다.
ports에서 컨테이너의 80번 포트를 호스트의 9000번 포트에 연결합니다. 이렇게 하면 브라우저에서 localhost:9000으로 접속할 수 있게 됩니다.
environment 섹션이 핵심입니다. 여기서 실제 메일 서버의 주소와 포트를 설정합니다.
ROUNDCUBEMAIL_DEFAULT_HOST는 IMAP 서버 주소이고, ROUNDCUBEMAIL_SMTP_SERVER는 메일을 보낼 때 사용하는 SMTP 서버 주소입니다. volumes는 데이터를 영구적으로 저장하기 위한 설정입니다.
컨테이너가 재시작되더라도 설정 파일이 사라지지 않도록 호스트의 디렉토리와 연결해 둡니다. 김개발 씨가 docker-compose up -d 명령을 실행했습니다.
잠시 후 컨테이너가 실행되었습니다. 브라우저를 열고 localhost:9000에 접속하니, 정말로 로그인 화면이 나타났습니다.
"와, 진짜 이게 끝이에요?" 김개발 씨가 놀라며 물었습니다. 박시니어 씨가 웃으며 대답했습니다.
"기본 설정은 그래요. 하지만 실제 서비스로 사용하려면 몇 가지 더 설정해야 해요."
실전 팁
💡 - 프로덕션 환경에서는 반드시 HTTPS를 적용하세요
- restart: unless-stopped 옵션으로 서버 재부팅 후에도 자동 실행되게 설정하세요
- 볼륨 경로는 백업하기 편한 위치로 지정하세요
2. Nginx 리버스 프록시 구성
김개발 씨가 localhost:9000으로 접속하는 것까지는 성공했습니다. 하지만 팀장님이 다시 찾아왔습니다.
"이거 mail.ourcompany.com 같은 도메인으로 접속하게 만들어야 해요. 그리고 HTTPS도 적용해야 하고요." 김개발 씨의 얼굴이 굳어졌습니다.
Nginx 리버스 프록시는 외부에서 들어오는 요청을 받아서 내부의 적절한 서버로 전달해주는 중개자 역할을 합니다. 마치 회사 안내 데스크가 방문객을 올바른 부서로 안내해주는 것처럼, Nginx가 사용자의 요청을 Roundcube 컨테이너로 안내합니다.
다음 코드를 살펴봅시다.
# /etc/nginx/sites-available/roundcube.conf
server {
listen 80;
server_name mail.example.com;
# HTTP를 HTTPS로 리다이렉트
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name mail.example.com;
# SSL 인증서 설정
ssl_certificate /etc/letsencrypt/live/mail.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.example.com/privkey.pem;
# Roundcube 컨테이너로 프록시
location / {
proxy_pass http://localhost:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
박시니어 씨가 화이트보드 앞으로 김개발 씨를 데려갔습니다. "리버스 프록시가 뭔지부터 이해해야 해요." 그림을 그리기 시작했습니다.
사용자가 있고, 서버가 있습니다. 그 사이에 Nginx가 있습니다.
"사용자가 mail.ourcompany.com으로 접속하면, 이 요청이 먼저 Nginx로 갑니다. Nginx가 '아, 이건 Roundcube로 보내야겠다'라고 판단해서 내부의 localhost:9000으로 전달하는 거예요." 김개발 씨가 물었습니다.
"그냥 Roundcube를 80번 포트에서 돌리면 안 되나요?" 박시니어 씨가 고개를 저었습니다. "여러 가지 이유가 있어요.
첫째, 보안입니다. Nginx가 앞단에서 악의적인 요청을 걸러낼 수 있어요.
둘째, 유연성입니다. 나중에 다른 서비스를 추가할 때 같은 서버에서 여러 도메인을 처리할 수 있어요.
셋째, HTTPS를 Nginx에서 한 번에 처리할 수 있어요." 위의 설정 파일을 보겠습니다. 첫 번째 server 블록은 HTTP(80번 포트)로 들어오는 요청을 HTTPS로 리다이렉트합니다.
요즘은 보안상의 이유로 모든 웹사이트가 HTTPS를 사용해야 합니다. 두 번째 server 블록이 실제 작업을 처리합니다.
listen 443 ssl http2는 HTTPS 연결을 받겠다는 의미입니다. http2는 더 빠른 통신을 위한 최신 프로토콜입니다.
ssl_certificate와 ssl_certificate_key는 SSL 인증서 파일의 경로입니다. Let's Encrypt를 사용하면 무료로 인증서를 발급받을 수 있습니다.
certbot이라는 도구를 사용하면 자동으로 인증서를 발급받고 갱신할 수 있습니다. location / 블록이 핵심입니다.
proxy_pass가 요청을 localhost:9000으로 전달합니다. 그 아래의 proxy_set_header들은 원래 요청의 정보를 Roundcube에 전달하기 위한 것입니다.
특히 X-Forwarded-Proto가 중요합니다. 이 헤더가 없으면 Roundcube는 자신이 HTTP로 접속되었다고 착각하여, 리다이렉트 URL을 잘못 생성할 수 있습니다.
김개발 씨가 설정 파일을 저장하고 nginx -t 명령으로 문법을 검사했습니다. OK가 떴습니다.
systemctl reload nginx로 설정을 적용했습니다. 브라우저에서 https://mail.example.com에 접속했습니다.
자물쇠 아이콘과 함께 Roundcube 로그인 화면이 나타났습니다. "이제 진짜 웹메일 서비스 같아 보이네요!" 김개발 씨가 뿌듯해하며 말했습니다.
실전 팁
💡 - Let's Encrypt로 무료 SSL 인증서를 발급받으세요 (certbot 사용)
- nginx -t 명령으로 설정 파일 문법을 항상 검사하세요
- 프록시 버퍼 설정을 조정하면 대용량 첨부파일 처리가 개선됩니다
3. IMAP SMTP 연결 설정
웹메일 화면은 잘 나오는데, 실제로 메일을 주고받을 수가 없었습니다. 로그인을 시도하면 "연결 실패" 오류가 발생했습니다.
김개발 씨는 머리를 긁적였습니다. "분명히 서버 주소는 맞게 입력했는데..."
IMAP은 메일을 받아오는 프로토콜이고, SMTP는 메일을 보내는 프로토콜입니다. Roundcube가 제대로 작동하려면 이 두 프로토콜에 대한 설정이 정확해야 합니다.
마치 우체국에서 편지를 받는 창구와 보내는 창구가 따로 있는 것처럼, 메일 시스템도 수신과 발신이 분리되어 있습니다.
다음 코드를 살펴봅시다.
// config/config.inc.php - Roundcube 메일 서버 설정
<?php
// IMAP 서버 설정 (메일 수신)
$config['imap_host'] = 'ssl://mail.example.com:993';
$config['imap_auth_type'] = 'LOGIN';
$config['imap_conn_options'] = array(
'ssl' => array(
'verify_peer' => true,
'verify_peer_name' => true,
),
);
// SMTP 서버 설정 (메일 발신)
$config['smtp_host'] = 'tls://mail.example.com:587';
$config['smtp_user'] = '%u'; // 로그인한 사용자 계정 사용
$config['smtp_pass'] = '%p'; // 로그인한 사용자 비밀번호 사용
$config['smtp_auth_type'] = 'LOGIN';
// 추가 보안 설정
$config['force_https'] = true;
$config['use_https'] = true;
박시니어 씨가 커피를 한 잔 들고 왔습니다. "IMAP과 SMTP, 이 두 가지만 제대로 이해하면 돼요." 김개발 씨에게 비유를 들어 설명하기 시작했습니다.
"우체국을 생각해봐요. 편지를 받으러 가는 창구가 있고, 편지를 보내려 가는 창구가 있잖아요.
IMAP은 받는 창구, SMTP는 보내는 창구예요." IMAP은 Internet Message Access Protocol의 약자입니다. 메일 서버에 저장된 메일을 가져오는 역할을 합니다.
포트 번호는 일반적으로 143(평문)이나 993(SSL 암호화)을 사용합니다. SMTP는 Simple Mail Transfer Protocol입니다.
메일을 보낼 때 사용합니다. 포트 번호는 25(평문), 465(SSL), 587(TLS)이 있는데, 요즘은 보안상 587번 포트를 가장 많이 사용합니다.
위의 설정 파일에서 **ssl://**과 **tls://**가 보이시나요? 이건 암호화 방식을 지정하는 것입니다.
SSL은 연결 시작부터 암호화하고, TLS는 평문으로 연결한 뒤 STARTTLS 명령으로 암호화를 시작합니다. %u와 %p는 특별한 변수입니다.
사용자가 Roundcube에 로그인할 때 입력한 아이디와 비밀번호가 자동으로 들어갑니다. 이렇게 하면 별도의 SMTP 계정 설정 없이 로그인한 계정으로 메일을 보낼 수 있습니다.
verify_peer와 verify_peer_name은 SSL 인증서를 검증하는 옵션입니다. 프로덕션 환경에서는 반드시 true로 설정해야 합니다.
만약 자체 서명 인증서를 사용하는 테스트 환경이라면 false로 설정해야 할 수도 있지만, 이는 보안상 권장하지 않습니다. 김개발 씨가 설정을 수정하고 다시 로그인을 시도했습니다.
이번에는 성공했습니다. 받은 편지함에 테스트 메일이 보였습니다.
"됐다!" 기쁜 마음에 답장을 작성해 보냈습니다. 발신도 성공이었습니다.
"근데 선배, 만약 메일 서버가 다른 서버에 있으면 어떻게 해요?" 김개발 씨가 물었습니다. "그때는 방화벽 설정도 확인해야 해요.
993, 587 포트가 열려 있어야 하거든요."
실전 팁
💡 - 포트 993(IMAP SSL)과 587(SMTP TLS)이 방화벽에서 열려 있는지 확인하세요
- 자체 서명 인증서 사용 시 verify_peer를 false로 설정해야 할 수 있습니다
- 메일 연결 문제 시 telnet으로 포트 연결을 먼저 테스트하세요
4. 플러그인 설치 및 관리
기본적인 메일 송수신은 잘 되었습니다. 그런데 팀장님이 또 요청을 추가했습니다.
"자동 응답 기능도 필요하고, 비밀번호 변경 기능도 있어야 해요. 아, 그리고 이모티콘도 넣을 수 있으면 좋겠어요." 김개발 씨는 이 모든 기능을 직접 개발해야 하나 걱정이 되었습니다.
Roundcube 플러그인은 기본 기능을 확장하는 모듈입니다. 마치 스마트폰에 앱을 설치하듯이, Roundcube에 플러그인을 설치하면 새로운 기능을 추가할 수 있습니다.
자동 응답, 비밀번호 변경, 캘린더 연동 등 수많은 플러그인이 이미 만들어져 있습니다.
다음 코드를 살펴봅시다.
// config/config.inc.php - 플러그인 활성화
<?php
// 사용할 플러그인 목록
$config['plugins'] = array(
'archive', // 메일 보관 기능
'zipdownload', // 첨부파일 일괄 다운로드
'managesieve', // 메일 필터링 규칙
'password', // 비밀번호 변경
'emoticons', // 이모티콘 지원
'vcard_attachments', // vCard 첨부파일 처리
);
// password 플러그인 설정
$config['password_driver'] = 'sql';
$config['password_db_dsn'] = 'mysql://user:pass@localhost/maildb';
$config['password_query'] = 'UPDATE users SET password=%c WHERE email=%u';
$config['password_minimum_length'] = 8;
박시니어 씨가 웃으며 말했습니다. "다행히 직접 개발할 필요 없어요.
Roundcube에는 플러그인 시스템이 있거든요." 플러그인이란 기존 소프트웨어에 기능을 추가하는 작은 프로그램입니다. 크롬 브라우저의 확장 프로그램, VS Code의 익스텐션과 같은 개념입니다.
Roundcube는 이미 수십 개의 공식 플러그인을 제공하고, 커뮤니티에서 만든 플러그인도 많습니다. Docker 이미지에는 대부분의 공식 플러그인이 이미 포함되어 있습니다.
설치할 필요 없이 설정 파일에서 활성화만 하면 됩니다. 위의 코드에서 $config['plugins'] 배열을 보세요.
여기에 플러그인 이름을 추가하면 활성화됩니다. 매우 간단합니다.
archive 플러그인은 메일을 별도의 보관 폴더로 옮기는 기능을 제공합니다. Gmail의 보관하기 버튼과 같은 기능이죠.
zipdownload는 여러 첨부파일을 한 번에 ZIP으로 다운로드할 수 있게 해줍니다. managesieve는 서버 측 메일 필터링을 설정하는 플러그인입니다.
특정 발신자의 메일을 자동으로 폴더로 분류하거나, 휴가 중 자동 응답을 설정할 수 있습니다. 이 기능이 팀장님이 요청한 자동 응답 기능입니다.
password 플러그인은 사용자가 직접 비밀번호를 변경할 수 있게 해줍니다. 이 플러그인은 추가 설정이 필요합니다.
password_driver로 비밀번호가 저장된 방식을 지정하고, password_query로 실제 비밀번호를 변경하는 SQL 쿼리를 작성합니다. %c는 새 비밀번호(암호화된 형태), %u는 사용자 이메일 주소를 의미합니다.
메일 서버의 사용자 데이터베이스 구조에 맞게 쿼리를 수정해야 합니다. 김개발 씨가 플러그인을 활성화하고 브라우저를 새로고침했습니다.
메뉴에 새로운 항목들이 나타났습니다. 설정 화면에 비밀번호 탭도 생겼습니다.
"커뮤니티 플러그인은 어떻게 설치해요?" 김개발 씨가 물었습니다. "그건 plugins 폴더에 직접 넣어야 해요.
Git으로 클론하거나 ZIP을 다운받아서 압축을 풀면 돼요."
실전 팁
💡 - 플러그인 활성화 후에는 브라우저 캐시를 지우세요
- password 플러그인은 메일 서버의 DB 구조에 맞게 쿼리를 수정해야 합니다
- 불필요한 플러그인은 비활성화하여 성능을 최적화하세요
5. 테마 커스터마이징
기능은 완성되었지만, 팀장님이 화면을 보더니 말했습니다. "괜찮긴 한데...
우리 회사 로고도 넣고, 색상도 회사 브랜드에 맞게 바꾸면 어때요?" 김개발 씨는 CSS를 만져야 하나 싶어 조금 걱정이 되었습니다.
Roundcube 테마는 웹메일의 외관을 결정하는 스킨입니다. 기본 제공되는 테마를 선택하거나, CSS를 수정하여 회사 브랜드에 맞게 커스터마이징할 수 있습니다.
마치 스마트폰의 테마를 바꾸듯이, 로고, 색상, 레이아웃을 자유롭게 변경할 수 있습니다.
다음 코드를 살펴봅시다.
/* skins/elastic/custom.css - 테마 커스터마이징 */
/* 회사 브랜드 색상으로 변경 */
:root {
--main-color: #2563eb; /* 메인 색상 */
--accent-color: #3b82f6; /* 강조 색상 */
--header-bg: #1e40af; /* 헤더 배경 */
}
/* 로고 영역 커스터마이징 */
#logo {
background-image: url('../images/company-logo.png');
background-size: contain;
width: 150px;
height: 40px;
}
/* 로그인 페이지 스타일 */
.login-page #login-form {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 12px;
box-shadow: 0 10px 40px rgba(0,0,0,0.2);
}
박시니어 씨가 Roundcube의 폴더 구조를 설명해주었습니다. "skins 폴더 안에 테마들이 있어요.
기본 테마는 elastic이고, 이게 가장 현대적인 반응형 테마예요." Roundcube 테마는 크게 두 가지 방식으로 커스터마이징할 수 있습니다. 첫째는 기존 테마의 CSS를 오버라이드하는 방식이고, 둘째는 완전히 새로운 테마를 만드는 방식입니다.
대부분의 경우 첫 번째 방식으로 충분합니다. elastic 테마는 CSS 변수를 사용합니다.
CSS 변수는 :root 선택자 안에 정의하면, 전체 페이지에서 사용할 수 있습니다. 색상 하나만 바꿔도 버튼, 링크, 아이콘 등 모든 곳에 일괄 적용됩니다.
위의 코드에서 --main-color를 바꾸면 전체적인 메인 색상이 변경됩니다. 회사의 브랜드 색상 코드만 알면 손쉽게 적용할 수 있습니다.
로고는 #logo 선택자에서 배경 이미지로 설정합니다. 투명 배경의 PNG 파일을 준비해서 images 폴더에 넣고, 경로를 지정하면 됩니다.
김개발 씨가 물었습니다. "근데 Docker 컨테이너 안의 파일을 어떻게 수정해요?" "볼륨 마운트를 활용하면 돼요." 박시니어 씨가 대답했습니다.
호스트의 디렉토리를 컨테이너 내부의 스킨 폴더에 연결하면, 호스트에서 파일을 수정해도 컨테이너에 바로 반영됩니다. docker-compose.yml에 다음과 같이 볼륨을 추가합니다: ./custom-skin:/var/www/html/skins/elastic/custom.
이제 custom 폴더에 CSS 파일을 넣으면 됩니다. 로그인 페이지도 커스터마이징했습니다.
.login-page 선택자로 로그인 화면만 따로 스타일을 적용할 수 있습니다. 그라데이션 배경과 둥근 모서리, 그림자 효과로 세련된 느낌을 줄 수 있습니다.
김개발 씨가 회사 로고와 브랜드 색상을 적용했습니다. 팀장님이 화면을 보고 만족스러운 표정을 지었습니다.
"오, 이제 진짜 우리 회사 서비스 같네요!"
실전 팁
💡 - 테마 수정 전에 원본 파일을 백업해두세요
- 브라우저 개발자 도구로 선택자를 확인하면 커스터마이징이 쉬워집니다
- 모바일 화면도 함께 테스트하세요 (elastic은 반응형 테마입니다)
6. 주소록 및 캘린더 연동
웹메일이 거의 완성되어 갈 무렵, 영업팀에서 요청이 들어왔습니다. "거래처 담당자 연락처를 팀원들이랑 공유할 수 있으면 좋겠어요.
그리고 미팅 일정도 메일에서 바로 확인할 수 있으면 편할 것 같아요." 김개발 씨는 이제 주소록과 캘린더까지 연동해야 했습니다.
CardDAV는 주소록을 동기화하는 프로토콜이고, CalDAV는 캘린더를 동기화하는 프로토콜입니다. Roundcube에 이 프로토콜을 연동하면 여러 기기에서 주소록과 캘린더를 공유하고 동기화할 수 있습니다.
마치 구글 연락처나 구글 캘린더처럼 어디서든 같은 데이터에 접근할 수 있게 됩니다.
다음 코드를 살펴봅시다.
// config/config.inc.php - CardDAV/CalDAV 연동 설정
<?php
// CardDAV 주소록 플러그인 설정
$config['plugins'][] = 'carddav';
// CardDAV 서버 연결 설정
$config['carddav_sources'] = array(
array(
'name' => '회사 공용 주소록',
'url' => 'https://dav.example.com/addressbooks/shared/',
'username' => '%u',
'password' => '%p',
'readonly' => false,
),
array(
'name' => '개인 주소록',
'url' => 'https://dav.example.com/addressbooks/%u/',
'username' => '%u',
'password' => '%p',
),
);
// CalDAV 캘린더 플러그인 설정
$config['plugins'][] = 'calendar';
$config['calendar_driver'] = 'caldav';
$config['calendar_caldav_url'] = 'https://dav.example.com/calendars/%u/';
박시니어 씨가 새로운 개념을 설명하기 시작했습니다. "CardDAV와 CalDAV는 WebDAV라는 프로토콜을 확장한 거예요.
쉽게 말해서 웹을 통해 데이터를 주고받는 표준 방식이에요." 김개발 씨가 고개를 갸웃했습니다. "표준이 왜 중요해요?" "표준이니까 어떤 앱에서든 사용할 수 있어요.
아이폰의 연락처 앱, 안드로이드의 캘린더 앱, Thunderbird, Outlook... 모두 CardDAV와 CalDAV를 지원해요.
한 번 설정해두면 어디서든 같은 주소록과 캘린더를 볼 수 있어요." 마치 USB가 표준이라서 어떤 컴퓨터에든 꽂을 수 있는 것과 같습니다. CardDAV는 주소록의 USB이고, CalDAV는 캘린더의 USB인 셈이죠.
위의 설정에서 carddav_sources 배열을 보세요. 여러 개의 주소록을 설정할 수 있습니다.
회사 공용 주소록과 개인 주소록을 분리하면, 거래처 정보는 팀원들과 공유하면서 개인 연락처는 따로 관리할 수 있습니다. readonly 옵션은 읽기 전용 여부를 결정합니다.
공용 주소록에서 일반 사용자는 조회만 가능하고, 관리자만 수정할 수 있게 설정할 수도 있습니다. CalDAV 설정도 비슷합니다.
calendar_driver를 caldav로 설정하고, 서버 URL을 지정하면 됩니다. %u는 로그인한 사용자 이름으로 치환되어, 각 사용자가 자신의 캘린더에 접근하게 됩니다.
CardDAV와 CalDAV 서버는 별도로 구축해야 합니다. Nextcloud, Radicale, Baikal 같은 오픈소스 솔루션을 사용하면 됩니다.
이미 회사에서 Nextcloud를 사용하고 있다면 그 서버를 그대로 연결하면 됩니다. 김개발 씨가 설정을 완료하고 Roundcube에 로그인했습니다.
왼쪽 메뉴에 주소록과 캘린더 아이콘이 생겼습니다. 주소록을 열어보니 회사 공용 연락처가 보였습니다.
캘린더에는 팀 미팅 일정이 표시되어 있었습니다. "이제 메일에서 바로 일정 확인하고, 받는 사람도 주소록에서 바로 선택할 수 있겠네요!" 김개발 씨가 기뻐했습니다.
박시니어 씨가 덧붙였습니다. "스마트폰에도 같은 CardDAV/CalDAV 계정을 추가하면, 폰에서도 동기화돼요.
이게 진정한 연동의 힘이에요."
실전 팁
💡 - CardDAV/CalDAV 서버로는 Nextcloud가 가장 인기 있고 기능이 풍부합니다
- 캘린더 알림 기능을 활용하면 중요 일정을 놓치지 않습니다
- 주소록 그룹 기능으로 부서별, 프로젝트별 연락처를 분류하세요
이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!
댓글 (0)
함께 보면 좋은 카드 뉴스
메일 클라이언트 연결 설정 완벽 가이드
다양한 메일 클라이언트에서 IMAP, POP3, SMTP 설정을 올바르게 구성하는 방법을 알아봅니다. Outlook부터 모바일 앱까지, 실무에서 바로 적용할 수 있는 설정 가이드입니다.
SSL/TLS 인증서 설정 완벽 가이드 (Let's Encrypt)
메일 서버 운영에 필수적인 SSL/TLS 인증서 설정 방법을 다룹니다. Let's Encrypt를 활용한 무료 인증서 발급부터 자동 갱신까지, 실무에서 바로 적용할 수 있는 내용을 담았습니다.
DNS 레코드 설정 완벽 가이드 MX SPF DKIM DMARC
이메일 서버 운영에 필수적인 DNS 레코드 설정을 다룹니다. MX, SPF, DKIM, DMARC 등 이메일 인증 레코드의 개념과 설정 방법을 초급 개발자도 이해할 수 있도록 쉽게 설명합니다.
Dovecot으로 IMAP/POP3 메일 서버 구축하기
Linux 환경에서 Dovecot을 활용하여 IMAP과 POP3 메일 서버를 구성하는 방법을 다룹니다. 메일 저장소 설정부터 사용자 인증, 쿼터 관리까지 실무에서 필요한 핵심 설정을 단계별로 학습합니다.
Docker 환경 준비 및 docker-mailserver 설치
나만의 메일 서버를 Docker로 구축하는 방법을 처음부터 끝까지 안내합니다. docker-mailserver를 활용하여 실무에서 바로 사용할 수 있는 메일 시스템을 단계별로 설정해봅니다.