간단한 메일 서버와 간단한 웹메일 클라이언트를 구축해보았다.

메일 서버는 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 파일을 제외한 나머지 파일은 업로드 되지 않는다. 물론 체크로직을 좀더 그럴싸하게 정리하면, 더 많은 파일을 확장자로 조절할 수 있다.

728x90

+ Recent posts