간단한 메일 서버와 간단한 웹메일 클라이언트를 구축해보았다.
메일 서버는 hMailServer를 웹메일 클라이언트는 RoundCube로 구성했다.
다만, RoundCube에서는 몇가지 설정할 것이 있어 해당 내용만 적는다.
1. 기본 도메인 설정.
왜 그런지 모르겠지만, 기본 도메인 설정이 없으면, local 호스트가 되거나, imap 서버 설정 정보를 기반으로 이메일 주소가 된다. 그래서 aaaa@localhost 라는 이메일 주소가 기본 주소가 되거나, 혹은 aaaa@imap.knoie.net 이런 식으로 되버렸다. 내가 원하는 것은 aaaa@knoie.net 인데 말이다.
그래서 설정 파일을 열어보았다.
설정파일은 config/defaults.inc.php 파일이다.
이중 다음과 같은 설정을 편집하면 된다.
그러면 각 개인들의 이메일 주소가 위와 같이 고정된다.
다만, 이처럼 설정하면 멀티도메인인 경우(하나의 메일서버에 여러개의 도메인을 걸쳐서 쓰는 경우) 문제가 발생할 듯 싶다. 고민 필요.
2. 첨부파일 제어
program/steps/mail/attachments.inc 파일에서 128줄 근처에 파일 체크하는 로직에 아래와 같은 코드를 넣으면 된다.
if($err = rcmail_check_ispdf($filename))
{
$ispdferr = true;
if (!in_array($err, $errors)) {
$OUTPUT->command('display_message', $err, 'error');
$OUTPUT->command('remove_from_attachment_list', $uploadid);
$errors[] = $err;
}
continue;
}
그리고 밑에 에러가 발생했을 때 분기별로 처리하는 로직이 있는데, 그 안에 else if 구분을 아래와 같이 추가해준다.
else if($ispdferr)
{
$msg = "Yon can upload only PDF";
}
맨 마지막에 rcmail_check_ispdf 함수를 만들어준다.
function rcmail_check_ispdf($filename)
{
$file_parts = pathinfo($filename);
if(!strcmp(strtolower($file_parts['extension']), 'pdf'))
return;
return "Yon can upload only PDF";
}
PDF 파일을 제외한 나머지 파일은 업로드 되지 않는다. 물론 체크로직을 좀더 그럴싸하게 정리하면, 더 많은 파일을 확장자로 조절할 수 있다.