<?
require_once('include/global.php');
require_once('conf.inc.php');


// check
	if ($G['DINFO']['d_svc_external_pop3'] === 'N') {
		msg("외부 메일(POP3)를 사용할 수 없습니다.\\n\\n서버관리자에게 문의하여 주십시오.");
	}

	if (!$_POST['p3_server'] || !$_POST['p3_id'] || !$_POST['p3_pwd'])
		msg('올바른 URL로 접근하여 주십시오');

// [2006-03-08] 메일서버가 동작중인지 확인
	require_once('include/admin_lib.php');
	mail_server_check_limit();

	// 중복여부 체크
	$p3_cnt = db_get_one("SELECT COUNT(*)  FROM " . $TB['POP3'] . " WHERE m_no='" . $AUTH['auth_m_no'] . "' AND p3_server='" . $_POST['p3_server'] . "' AND p3_id='" . $_POST['p3_id'] . "'");
	if ($p3_cnt > 0)
		msg("이미 추가된 외부 메일입니다.");


// [2009-07-13] 자기자신의 계정은 등록할 수 없도록 제한.
	if (!$G_SYS['NM_POP3_SELF_TEST_SKIP'])
	{
		$_url = parse_url($_POST['p3_server']);
		if ($_url['host'] == '' && $_url['path'] != '')
			$_url['host'] = $_url['path'];
		if (preg_match("/[a-z]+/i", $_url['host']))
		{
			$p3_server_ip = gethostbyname($_url['host']);
		} else
		{
			$p3_server_ip = trim($_url['host']);
		}	// if()

		if (in_array($p3_server_ip, array('127.0.0.1', $_SERVER['SERVER_ADDR'])) && ($_url['port'] == '' || $_url['port'] == '110'))
		{
			if (strpos($_POST['p3_id'], '@') !== false)
			{
				$_ex = explode('@', $_POST['p3_id']);
				$p3_id_real = $_ex[0];
				$p3_id_domain = $_ex[1];
			} else
			{
				$p3_id_real = $_POST['p3_id'];
				$p3_id_domain = '';
			}	// if()

			if ($p3_id_real == $AUTH['auth_m_id'] && ($p3_id_domain == '' || $p3_id_domain == $G_SYS['MAIL_DOMAIN']))
			{
				$q = "SELECT m_id, m_pwd FROM ".$TB['MEMBER']." WHERE m_id='".$AUTH['auth_m_id']."' AND d_no='".$AUTH['auth_d_no']."'";
				$mbr = db_get_row($q);
//				if (!strcmp($m_pwd, pwd_enc($_POST['p3_pwd'], $AUTH['auth_m_id'], $m_pwd)))
				// [2025-11-15] 비밀번호 해시 개선
				if (nmail_password_verify(stripslashes($_POST['p3_pwd']), $mbr['m_pwd'], $mbr['m_id']))
				{
					msg("[외부 메일(POP3)]에 자기자신의 메일 계정은 추가할 수 없습니다.\\n\\n이 기능은 다른 메일 계정에 존재하는 메일을 가져오는 기능이기 때문입니다.");
				}	// if()
			}	// if()
		}	// if()
	}	// if()


// data
	$_POST['p3_server'] = to_db_str($_POST['p3_server'], 255);
	$_POST['p3_server_port'] = to_db_str($_POST['p3_server_port'], 255);
	$_POST['p3_id'] = to_db_str($_POST['p3_id'], 255);
	$_POST['p3_pwd'] = to_db_str($_POST['p3_pwd'], 255);
	if($_POST['p3_authtype']==="SSL"){
		$_POST['p3_authtype'] = "POP3S";
	}else{
		$_POST['p3_authtype'] = "CLR";
	}

	$sql = "
		INSERT INTO
			" . $TB['POP3'] . "
			(p3_no, m_no, p3_server, p3_id, p3_pwd, p3_authtype, p3_leave)
		VALUES
			(".db_sqc_next($TB['POP3']).", '" . $AUTH['auth_m_no'] . "', '" . $_POST['p3_server'] . ":" . $_POST['p3_server_port'] . "', '" . $_POST['p3_id'] . "', '" . $_POST['p3_pwd'] . "', '" . $_POST['p3_authtype'] . "', '" . $_POST['p3_leave'] . "')
		";
	db_query($sql);



// 웹메일용 처리
	if($_POST['p3_leave']==="Leave"){
		$_POST['p3_authtype'] .= ",Leave";
	}
	require_once('include/admin_lib.php');
	pop3_add($AUTH['auth_m_id'], $_POST['p3_server'] . ":" . $_POST['p3_server_port'], $_POST['p3_id'], $_POST['p3_pwd'], $_POST['p3_authtype']);

// end
	#msg("외부 메일이 등록되었습니다.", 0);
	movepage('pop3.php');


require_once('include/global_end.php');
?>