카페24 웹호스팅. 간혹 본인의 개인서버가 아니라 웹호스팅 서버에 DDNS를 연결할순 없을까? 하다가

우연치 않은 기회로 네이버 Works를 쓰려고 하니 도메인MX설정을 바꾸려면 DNSEVER.com 으로 네임서버를 바꿔야해서

처음에는 바보같게도 카페24의 1차 네임서버 IP로 DDNS를 설정했다. 그랬더니 당연히도.. 접속이 안된다.

 

카페24 고객센터에 전화해보니 ddns를 쓰려면 실제 웹호스팅중인 서버 IP를 입력해서 쓰라는 답변이 돌아왔다.

그렇다면 그 ip 는 어떻게 알아낼 것인가.

 

방법은 의외로 간단하다. 카페24에서 무료로 제공하는 2차도메인으로 본인의 웹호스팅을 연결한 다음,

 

 

이렇게 핑을 날려보면 서버IP가 뜬다. 이 ip를 DDNS관리 화면에서 입력해주면 신기하게도 바로 연결이 된다.

 

 

카페24에서 웹호스팅 사용시, XE를 설치하여 쉬운설치 기능을 사용하려고 할때,

평소처럼 셋팅을 하고 나니 "msg_ftp_upload_failed" 라는 오류를 뱉으며 쉬운설치 기능이 작동하지 않았다.

그래서 여러가지 방법을 알아보고 했지만, 삽질을 꽤나 하다가 결국 해결을 했다.

 

테스트환경: XE 1.7.4

해결일자: 2014.03.07

 

카페24 홈페이지 도움말: http://help.cafe24.com/cs/cs_manual_view.php?idx=39&page=1&categoryIdx=&s_key=&s_value=&man_no=1

 

카페24 홈페이지에서도 이 부분에 대해서 기술을 하고 있긴 하지만, 여기서 빠진 부분이 없잖아 있다.

여기 웹호스팅의 보통 유저의 경로는 아이디가 user 이라면

/home/hosting_users/user/ 인데, www를 디폴트폴더로 사용한다.

 

우선 XE 설정 > FTP설정에서 아이디와 비밀번호를 입력하고 확인을 누른다면 success 라는 메시지가 뜬다.

그런데 이렇게 성공했다고 해놓고 쉬운설치에서는 정작 오류를 뱉으니 사람 미치고 환장하게 한다.

그렇다면 어느부분에 문제가 있는걸까. ?? 찾다가 찾다가 결론적인 해결방법을 먼저 적어보자면,

 

우선 저 위의 카페24 도움말은 전혀 도움이 못된다.

예전에는 카페24의 웹호스팅의 ftp 설정이 SFTP였다면, 지금은 "모든 FTP를 지원"하는 상태이다.

그러니 이미 첫단추부터 틀린말을 하고 있는 셈인데(1.5.x 버젼을 기준으로 설명하고 있는것도....)

 

1. Passive Mode 를 사용한다.

2. IP는 실제 웹호스팅 서버의 ip를 입력한다. (127.0.0.1 대신에)

3. XE를 만약 www 폴더를 로컬 폴더로 해서 설치를 했다면 경로가 "/" 라고 나와도 "/www/" 라고 수정 후 저장한다.

(1,2번만 하고 만약 저장을 해서 경로 설정 부분이 FTP설정 화면에 나오지 않는다면 /files/config/ftp.config.php 를 열어서 경로 부분을 직접 수정하고 저장하자.)

 

이렇게 3개 항목만 해줘도 쉬운설치는 잘 된다.

그렇다면 2번을 못하는 분도 계실텐데, 2번은 자신의 계정이 속해있는 서버의 IP를 찾으면 된다. 이것은 의외로 간단한데

윈도우에서 시작>실행>cmd 를 입력후 " ping 자신의아이디.cafe24.com -t " 를 해서 핑을 보내보면 IP주소가 뜬다.

물론 도메인으로 연결을 한 상태라면 " ping domain.com -t " 로 해도 된다.

 

 

div에 글을 써넣으면 '\n'이 먹히지 않는다. 그리고 같은 글자가 반복되어서 나오면("+++++++++..." 같은것)
div영역을 뚫고 나가버린다. 이를 해결하기 위해서 CSS의 white-space와 word-break를 써야한다.

white-space
줄바꿈 해주는 property로 normal, nowrap, pre, pre-line, pre-wrap이 있다.

normal은 보통의 경우로 옵션을 주지 않아도 된다.
nowrap은 줄바꿈을 하지 않는다.(div를 뚫고 나간다.)
pre는 html의 <pre>태그처럼 내부의 태그를 실행시켜주지만 이역시 줄바꿈은 하지 않는다.
pre-line은 normal + pre. 줄바꿈도 해주고 태그도 실행한다.
pre-wrap는 pre-line과 비슷 하지만 pre-line은 연속되는 공간("     ")을 한칸으로 압축하지만
             pre-wrap는 압축하지 않고 그대로 보여준다.

word-break
한단어가 길게 이어질때 자동으로 잘라주는 property이다.

normal은 자르지 않는다.
break-all은 영역을 넘어가면 무조건 자른다.
hyphenate는 영역을 넘어가더라도 단어를 유지해준다.
keep-all은 한글일 경우 띄어쓰기 기준으로 자른다.(only IE)
현재 word-break는 5대 브라우저중 FF와 Opera만 지원하지 않는다.

word-wrap
normal은 자르지 않는다.
break-word는 단어단위로 자른다.

(CSS3를 지원하는) 모든 브라우저에서 단어별로 줄바꿈하고 반복되는 단어를 자르려면(한글 제외)

white-space: pre-wrap;
word-wrap: break-word;
옵션을 추가하면 된다.

출처1:
[CSS] 텍스트 줄바꿈 처리 word-break, white-space

출처2:
pre-line과 pre-wrap 차이

출처3:
word-break와 word-wrap

'' 카테고리의 다른 글

자동 줄 바꿈  (0) 2014.03.04
[Cufon] 웹폰트 Cufon 나눔고딕400/600 및 RixHead  (0) 2013.09.09
[CSS] 하이퍼링크 클릭시 점선 없애기  (0) 2013.09.09

XE 템플릿 구문

템플릿(template)이란 붕어빵을 만드는 틀로 비유된다. 같은 모양, 같은 크기의 객체(object)를 만들기 쉽다. 프로그래밍 언어에서 템플릿 구문은 초등학교 시절의 플라스틱 모형자를 생각하면 이해가 쉽다. 제각각 다른 모양, 다른 크기로 그려지는 삼각형도 모형자 하나만 있으면 모두들 똑같은 삼각형을 그려낸다...^^
XE코어도 대부분 PHP로 작성되는 오픈소스 프로그래밍 언어이다. 따라서 언어의 특성상 작성자 특유의 즐겨쓰는 구문이나 코딩법들이 사용될 가능성이 크다. 이것을 어떻게 일관된 규칙과 문법으로 유지시켜 나갈 수 있을까?

"XE 템플릿 구문이란, 동적 데이터의 화면 출력을 효과적으로 제어하기 위해 PHP로부터 프리젠테이션 로직을 분리한 코드이다."라고 메뉴얼은 설명한다. 프리젠테이션 로직이란 보여주기 위한 로직, 즉 화면상의 디자인 구성을 위한 로직을 일컫는 말로써, 모듈의 템플릿, 위젯, 애드온, 게시판의 스킨 등에서 사용하기 위한 조건문과 반복문(if, for, while)을 간결한 소스 코드로 분리하였다는 뜻이다. 이것은 다른 프로그래밍 언어들처럼 XE 안에서만 특별히 사용하기 때문에 XE 템플릿 문법이라 표현하고 화면에 표시할 때는 서버 측에서 다시 PHP 문법으로 해석(compile)되어 출력된다.

XE 템플릿 문법의 장점

  • 간결 - 스킨의 소스 코드를 약 절반 정도로 간결하게 줄여서 용량을 절약할 수 있다.
  • 판독 - HTML 태그에 기반하여 문법을 작성하기 때문에 조건문과 반복문의 시작과 끝을 찾기가 쉽고, 문법적 오류를 줄일 수 있다.

XE 템플릿 문법의 사용법

  • HTML 주석 <!--...-->안에 작성하는 방법. 예) <!--@if(...)-->...<!--@end-->
  • 가상의 <block> 요소 안에 작성하는 방법. 예) <block>...</block>
  • HTML 요소에 직접 작성하는 방법. 예) <p cond="조건절">...</p>
  • 주석이나 요소에 의존하지 않고 작성하는 방법. 예) {$content} 내용 변수로 데이터를 출력함.

※ 가상요소(block)란, HTML 요소의 형식을 빌려 쓰고는 있지만 제어문을 실행할 뿐 실제로 화면에 요소가 출력되지는 않는다. cond 속성도 가상의 속성으로서 조건문 역할을 한다.


XE 템플릿 문법의 이해

다음 구문은 PHP의 IF 조건문이다. PHP는 HTML 문서 안에서 HTML 태그와 혼합하여 사용할 수 없다. PHP는 서버에서만 읽고 해석하는 서버측 스크립트 언어이고 HTML은 웹브라우저에서 읽고 해석하는 마퀴업 언어이기 때문이다.

<?php
   if(조건식) {
      실행문1
   } else {
      실행문2
   }
?>

따라서 실행문의 내용이 HTML 태그를 포함한다면 실행문은 태그를 포함한 echo문으로 작성되어야 하고 다음과 같다.

<?php
   if($a=1) {
      echo "<p>조건식이 TRUE이면 실행문1이 표현된다.</p>";
   } else {
      echo "<p>그밖에는 실행문2가 표현된다.</p>";
   }
?>

만약 echo문을 사용하지 않고 PHP 구문과 HTML 구문을 분리하여 작성한다면 다음과 같다.

<?php  if($a=1) { ?>
   <p>조건식이 TRUE이면 실행문1이 표현된다.</p>
<?php } else { ?>
   <p>그밖에는 실행문2가 표현된다.</p>
<?php } ?>

그런데 위와 같이 구문을 나누고 보니 무척 복잡해 보이고 문제가 있는 경우에 오류의 원인을 찾기가 쉽지 않다. 따라서 많은 개발자들이 PHP 프로그래밍 작업에서 약식 출력(<?=...?>) 또는 짧은 태그(<?...?>)를 사용하기도 하지만 XHTML 문서에서는 이렇게 사용되는 경우 치명적인 오류가 발생한다. 따라서 HTML 태그와 구분된 PHP 코드를 HTML 주석문(<!-- -->)과 앳 기호(@)를 이용해 다음과 같이 약속해보자!!!

<!--@if($a=1)-->
   <p>조건식이 TRUE이면 실행문1이 표현된다.</p>
<!--@else-->
   <p>그밖에는 실행문2가 표현된다.</p>
<!--@end-->

이렇게 약속된 표현방법을 XE 템플릿 문법이라 말하고 HTML 주석문 안에 @ 기호를 이용해 작성된 구문은 서버에서 다시 PHP문으로 해석(compile)되어 출력되는 것이다.

결과적으로 XE 템플릿 문법은 HTML 문서 안에서 PHP 구문을 대신하여 사용하기 위한 약속된 템플릿용 언어이다. 따라서 XE의 레이아웃과 모듈의 템플릿 스킨, 게시판의 스킨 등에서 사용되는 템플릿용 구문이라고도 할 수 있으며 다른 언어에서는 사용되지 않기 때문에(배울 수 없기 때문에) 약간의 공부가 필요하다.

이와 유사한 형식의 템플릿 언어가 jQuery이다.

<script type="text/javascript">
<!--
	function sayHello() {
		document.getElementById('text1').innerHTML = '우주 정거장을 닮은 XE!';
	}
//-->
</script>

위와 같은 스크립트 블록 내부에 sayHello()라는 javascript 함수를 정의하였다면 아래의 텍스트를 클릭해 보자.

XpressEngine은...

문서 안에서 해당하는 엘리먼트를 찾아 텍스트를 바꾸어 주는 javascript 함수 구문이지만 모든 웹브라우저에서 같은 결과를 얻을 수 있다고는 말할 수 없다. 왜냐하면 브라우저마다 javascript를 동일하게 지원하지 않는다. 따라서 다양한 종류의 브라우저에서 동일한 결과를 얻기 위한 노력으로, 자기 자신 스스로가 사용할 목적의 작은 함수 라이브러리를 만들고, 직접 호주머니에 넣고 다니면서 미리 약속된 문법을 사용하여 모형자처럼 템플릿 언어로 만든 것이 jQuery이다.

// 자신이 사용할 jQuery 함수 라이브러리 파일을 원격으로 불러올 수도 있다.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>

<script type="text/javascript">
   jQuery(function($) { // javascript가 아닌 jQuery라고 이야기 한다.
      $('#text2').click(function() { // 미리 정의된 함수 이름을 불러 선택된 엘리먼트가 해야 할 일을 가르쳐 준다.
         $('#text2').html('우주 정거장을 닮은 XE!'); // 선택자의 텍스트를 바꾼다.
      });
   });
</script>

XpressEngine은...

위에 작성한 jQuery 구문은 먼저 작성한 javascript 구문과 동일한 결과를 얻을 수 있지만 차이점은 대부분의 웹브라우저에서 같은 결과를 보여준다는 것이다. 왜냐하면 자신이 사용할 함수 라이브러리를 미리 불러 놓았고, 미리 정의된 템플릿 구문을 이용하여 문서내 엘리먼트를 찾아서 바꾼다. 이것 또한 약속된 언어이기 때문에 정의되지 않은 함수 구문을 사용할 수 없고 좀더 많은 공부가 필요하지만 동적인 웹페이지를 개발하는데 꼭 필요한 언어가 되었다.

XE 코어의 호주머니 속에는 이미 jQuery 함수 라이브러리를 가지고 있어서 별도의 라이브러리 파일을 불러올 필요가 없다. 따라서 XE에서 사용되는 레이아웃, 모듈의 템플릿, 게시판의 스킨 등에서 jQuery 함수를 마음껏 사용할 수 있는데 그러면, XE 템플릿 구문은 어떤 파일을 참조하고 있을까?
이것을 이해하기 위해 여기까지 왔다!

정답은 xe/classes/template/TemplateHandler.class.php 함수 라이브러리 파일이다. 이곳에서 XE가 사용하는 템플릿 구문이 PHP문으로 해석(compile)되어 출력되는 것이다. XE가 사용하는 함수 라이브러리 파일을 꼭 읽어보자! 그러면 XE와 좀더 가까워 질 수 있다...^^

 

출처 : http://www.xeschool.com/xe/xenote_template_syntax_expressions

[ 에러코드에대한 설명 ]
ErrorDocument 100 "100 Continue"
ErrorDocument 101 "101 Switching Protocols"
ErrorDocument 200 "200 OK"
ErrorDocument 201 "201 Created"
ErrorDocument 202 "202 Accepted"
ErrorDocument 203 "203 Non-Authoritative Information"
ErrorDocument 204 "204 No Content"
ErrorDocument 205 "205 Reset Content"
ErrorDocument 206 "206 Partial Content"
ErrorDocument 300 "300 Multiple Choices"
ErrorDocument 301 "301 Moved Permanently"
ErrorDocument 302 "302 Found"
ErrorDocument 303 "303 See Other"
ErrorDocument 304 "304 Not Modified"
ErrorDocument 305 "305 Use Proxy"
ErrorDocument 306 "306 Unused"
ErrorDocument 307 "307 Temporary Redirect"
ErrorDocument 400 "400 Bad Request"
ErrorDocument 401 "401 Unauthorized"
ErrorDocument 402 "402 Payment Required"
ErrorDocument 403 "403 Forbidden"
ErrorDocument 404 "404 Not Found"
ErrorDocument 405 "405 Method Not Allowed"
ErrorDocument 406 "406 Not Acceptable"
ErrorDocument 407 "407 Proxy Authentication Required"
ErrorDocument 408 "408 Request Timeout"
ErrorDocument 409 "409 Conflict"
ErrorDocument 410 "410 Gone" - 당신은 인증된 사용자가 아닙니다.
ErrorDocument 411 "411 Length Required"
ErrorDocument 412 "412 Precondition Failed"
ErrorDocument 413 "413 Request Entity Too Large"
ErrorDocument 414 "414 Request-URI Too Long"
ErrorDocument 415 "415 Unsupported Media Type"
ErrorDocument 416 "416 Requested Range Not Satisfiable"
ErrorDocument 417 "417 Expectation Failed"
ErrorDocument 500 "500 Internal Server Error"
ErrorDocument 501 "501 Not Implemented"
ErrorDocument 502 "502 Bad Gateway"
ErrorDocument 503 "503 Service Unavailable"
ErrorDocument 504 "504 Gateway Timeout"
ErrorDocument 505 "505 HTTP Version Not Supported"

1. add-apt-repository를 사용하기 위한 패키지 설치

 

root@sungsik81:/usr/lib# apt-get install python-software-properties

 


2. Oracle Java 설치를 위한 repository 추가

root@sungsik81:/usr/lib# add-apt-repository ppa:webupd8team/java

 


3. 추가한 repository 적용

root@sungsik81:/usr/lib# apt-get update

 


4. 원하는 버전의 자바 설치 - 6버전으로 설치

root@sungsik81:/usr/lib# apt-get install oracle-java6-installer

 


5. 설치된 자바 버전확인

root@sungsik81:/usr/lib# java -version

java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)

 


6. Tomcat 설치

root@sungsik81:/usr/lib# apt-get install tomcat7

 


7. 설치된 Tomcat 버전 확인

root@sungsik81:/usr/share/tomcat7# pwd
/usr/share/tomcat7

root@sungsik81:/usr/share/tomcat7# cd bin
root@sungsik81:/usr/share/tomcat7/bin# sh version.sh
Using CATALINA_BASE: /usr/share/tomcat7
Using CATALINA_HOME: /usr/share/tomcat7
Using CATALINA_TMPDIR: /usr/share/tomcat7/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.26
Server built: Jul 19 2012 03:21:30
Server number: 7.0.26.0
OS Name: Linux
OS Version: 3.2.0-23-generic
Architecture: amd64
JVM Version: 1.6.0_43-b01
JVM Vendor: Sun Microsystems Inc.

 


8. JAVA_HOME 설정
아래의 캡쳐된 이미지와 같이 JAVA_HOME 설정부의 주석을 해제하여, 경로를 설정함니다.

root@sungsik81:/usr/share/tomcat7/bin# vi /etc/default/tomcat7

 


9. Tomcat 서비스 실행
아래의 캡쳐된 이미지와 같이 서버를 시작요청하여, 결과를 확인한다.

 

 

 

root@sungsik81:/usr/share/tomcat7/bin# service tomcat7 start

 

 

 

 


10. 웹브라우저를 통한 서비스 동작확인

 


11. docs, example, admin 설치하기(내용추가 : 2013/03/29)
설치완료 후 http://도메인:8080 으로 각 링크 정상적인지 여부 확인

root@sungsik81:/home/polaris# apt-get install tomcat7-admin tomcat7-examples tomcat7-docs

 


12. Manager WebApp 설정하기
아래 Tomcat 설정파일을 열어준뒤, 주석을 풀고 내용을 수정한다.

root@sungsik81:/var/lib/tomcat7/conf# vi tomcat-users.xml

[기존설정내용]
<tomcat-users>
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
-->
</tomcat-users>

[변경적용내용]
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="admin"/>
<user username="사용할계정명" password="비밀번호"
roles="manager-gui,manager-script,manager,admin-gui,admin-script,admin"/>

 


13. Tomcat 재기동

root@sungsik81:/var/lib/tomcat7/conf# service tomcat7 restart

* Stopping Tomcat servlet engine tomcat7 [ OK ]
* Starting Tomcat servlet engine tomcat7 [ OK ]

 



14. 웹브라우저에서 정상동작여부 확인


참고 : http://gentooboy.tistory.com/226
참고 : http://webnautes.tistory.com/entry/ubuntu-JSP-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95
참고 : http://stackoverflow.com/questions/11219678/apache-tomcat-installation-directory-in-ubuntu-configure-tomcat-in-eclipse-u

출처: http://busydeveloper.tistory.com/164

postfix 설치

대부분 postfix는 설치되어 있다.

만약 설치되어 있지 않다면 postfix를 설치해야 한다.

$ sudo apt-get install postfix ; 설치

 

postfix 설정

$ sudo dpkg-reconfigure postfix ; 환경 설정

인터넷 사이트(internet site)

Postfix Configuration : server.com mail.server.com localhost.server.com localhost

동기 업데이트 설정 Yes/No

Postfix Configuration : 기본 설정을 그대로 사용

procmail : yes

로컬 주소 확장용 문자 : + (기본값)

 

메일 폴더 설정

sudo postconf -e 'home_mailbox = Maildir/'

procmail은 사용하지 않는것으로 설정

postfix 초기 설치시 기본설정은 procmail 사용으로 되어있다.

마약 초기 설치시 procmail 사용으로 설정하였다면 아래와 같이 사용하지 않는것으로 수정할것

그렇지 않으면 Maildir폴더로 메일이 넘어가지 않는다.

sudo postconf -e "mailbox_command = "

SASL을 사용하여 SMTP인증을 하기 위한 postfix 설정

sudo postconf -e 'smtpd_sasl_local_domain ='

sudo postconf -e 'smtpd_sasl_auth_enable = yes'

sudo postconf -e 'smtpd_sasl_security_options = noanonymous'

sudo postconf -e 'broken_sasl_auth_clients = yes'

sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

sudo postconf -e 'inet_interfaces = all'

/etc/postfix/main.cf에 위의 내용이 저장된다.

/etc/postfix/sasl/smtpd.conf에 다음 내용 추가

pwcheck_method: saslauthd

mech_list: plain login

 

TLS 인크립션과 인증을 위한 인증서 생성

openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

chmod 600 smtpd.key

openssl req -new -key smtpd.key -out smtpd.csr

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

openssl rsa -in smtpd.key -out smtpd.key.unencrypted

mv -f smtpd.key.unencrypted smtpd.key

openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

sudo mv smtpd.key /etc/ssl/private/

sudo mv smtpd.crt /etc/ssl/certs/

sudo mv cakey.pem /etc/ssl/private/

sudo mv cacert.pem /etc/ssl/certs/

 

들어오고 나가는 메일(incoming & outgoing mail)에 대한 TLS 인크립션 사용을 위해 postfix 설정

sudo postconf -e 'smtpd_tls_auth_only = no'

sudo postconf -e 'smtp_use_tls = yes'

sudo postconf -e 'smtpd_use_tls = yes'

sudo postconf -e 'smtp_tls_note_starttls_offer = yes'

sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'

sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'

sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'

sudo postconf -e 'smtpd_tls_loglevel = 1'

sudo postconf -e 'smtpd_tls_received_header = yes'

sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'

sudo postconf -e 'tls_random_source = dev:/dev/urandom'

sudo postconf -e 'myhostname = server1.example.com'

 

postfix demon 재시작

sudo /etc/init.d/postfix reload

 

sasl2 설치(설치되어 있지 않을 경우에)

클라이언트(xp, 맥, 리눅스, etc)에서 메일을 보내려면 인증절차를 위해 필요합니다.

$ sudo apt-get install libsasl2 libsasl2-modules sasl2-bin
...생략...
전에 선택하지 않은 libsasl2 꾸러미를 선택합니다.
libsasl2 꾸러미를 푸는 중입니다 (.../libsasl2_2.1.22.dfsg1-18ubuntu2_all.deb에서) ...
전에 선택하지 않은 sasl2-bin 꾸러미를 선택합니다.
sasl2-bin 꾸러미를 푸는 중입니다 (.../sasl2-bin_2.1.22.dfsg1-18ubuntu2_i386.deb에서) ...
db4.6-util (4.6.21-6ubuntu1) 설정하는 중입니다 ...
libsasl2 (2.1.22.dfsg1-18ubuntu2) 설정하는 중입니다 ...
sasl2-bin (2.1.22.dfsg1-18ubuntu2) 설정하는 중입니다 ...
* To enable saslauthd, edit /etc/default/saslauthd and set START=yes

 

saslauthd 수정

$ sudo vi /etc/default/saslauthd

START를 yes로 수정하고 PWDIR, PARAMS, PIDFILE를 추가

START=yes



PWDIR="/var/spool/postfix/var/run/saslauthd"

PARAMS="-m ${PWDIR}"

PIDFILE="${PWDIR}/saslauthd.pid"

그리고 OPTION을 다음과 같이 수정한다.

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

 

/var/spool/postfix/var/run/saslauthd에 대한 dpkg 상태를 업데이트

dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

 

saslauthd 실행
sudo /etc/init.d/saslauthd start

 

 

부팅시 실행되는/etc/init.d/saslauthd 수정할 필요 없슴

 

SMTP가 정상동작하는지 테스트

$ telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 mail.comingmedia.com ESMTP Postfix (Ubuntu)

ehlo localhost

250-mail.comingmedia.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-STARTTLS

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

 

 

 courier IMAP와 POP3설치
sudo apt-get install courier-pop

sudo apt-get install courier-imap

 

 

Maildir 설정

maildirmake /etc/skel/Maildir

maildirmake /etc/skel/Maildir/.Drafts

maildirmake /etc/skel/Maildir/.Sent

maildirmake /etc/skel/Maildir/.Trash

maildirmake /etc/skel/Maildir/.Templates

각 사용자에 대해서

cp -r /etc/skel/Maildir /home/myuser/

chown -R myuser:usergroup /home/myuser/Maildir

chmod -R 700 /home/myuser/Maildir

 

Test

smtp 테스트

$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.comingmedia.com ESMTP Postfix (Ubuntu)
ehlo yourdomain.com
250-mail.yourdomain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: root@yourdomain.com
250 2.1.0 Ok
rcpt to: jhanglim@yourdomain.com
250 2.1.5 Ok
data
354 End data with .
Subject: My first mail

Hi,
.
(and Enter In a new Line)

250 2.0.0 Ok: queued as C515B863FC
quit
221 2.0.0 Bye
Connection closed by foreign host.

 

jhanglim에게 메일이 정상적으로 도착했는지 확인

su - fmaster

cd Maildir/new

ls

만약 pop3클라이언트(예 : 선더버드)가 동작하고 있다면 Maildir/new폴더가 아니라 Maildir/cur 폴더에 파일이 있을것이다.

이유 : 이미 po3클라이언트가 메일을 받아갔으므로 새로운 메세지가 아니다.

 

 

pop3 확인

$ telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user
+OK Password required.
pass
+OK logged in.

imap 확인

$ telnet localhost imap
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution information.
imap login
imap OK LOGIN Ok.

 

 

[출처: http://sukwoo.blogspot.kr/2008/08/ubuntu-mail-server.html]

* usermod : 사용자의 정보를 변경하는 명령

* 사용법
usermod [옵션] 홈디렉토리 계정

* 옵션
-c : 사용자의 설명을 수정한다.
-d 홈디렉토리 : 사용자의 홈 디렉토리를 변경한다.
-G 그룹 : 사용자의 그룹을 변경한다.
-s shell : 사용자의 로그인 셀을 변경한다.

* test 사용자의 홈 디렉토리 변경하기
# usermod -d /var/www/html test
# /etc/init.d/vsftpd restart

[vsftpd] FTP 서버에 업로드시 553 Could not create file. 에러가 뜨면,

# chown 계정이름 사용할경로
# chgrp 계정이름 사용할경로

[출처 : http://www.treasurej.com/tblog/textyle/51921 ]

+ Recent posts