Action disabled: source

Sendmail

개념정리

프로토콜

  • SMTP (simple mail transfer protocol) : 메일을 보낼 때 사용되는 프로토콜.
  • POP3 (post office protocol) : 우체국처럼 메일을 받을 때 사용되는 프로토콜.
  • IMAP (internet mail protocol) : 메일을 받을 때 사용되는 프로토콜.

위의 것들은 프로그램이 아니다.(헷갈리지 말것) 여러분들에게 익숙한 TCP/IP와 같이 메일을 전송하기 위한 프로토콜들이다.

프로그램

  • MUA (Mail user agent) : 메일을 보내기 위해 사용되는 프로그램. 예) outlook ….
  • MTA (Mail transfer agent) : 메일을 전달받아 이를 외부로 전달해 주는 프로그램. (ex. sendmail)

A가 (MUA)를 사용해서 B에게 메일을 보내면

MTA(sendmail)가 SMTP를 이용하여 B가 사용하는 메일 서버에 전달 된다. B는 POP3를 이용하여 메일서버에 존재하는 메일을 로컬로 가지고 가서 확인한다.

만약 A와 B가 같은 동일한(하나의) 메일 서버에서 서로 메일을 주고 받을 경우에는, 메일이 MTA로 전달 되는 것이 아니라 MDA (mail delivery agent)로 전달이 된다.

Sendmail

Postfix 를 요즘 많이 쓴다고 하는데, 걍 편한 sendmail 을 설치해줬다. 설치…

sudo apt-get install  sendmail sensible-mda

설정

설치한뒤에 sudo sendmailconfig를 실행하면 기본 설정파일들이 생성되고 일반적인 사용은 기본 설정으로도 가능하다. 처음 설치된 sendmail 은 오로지 서버 내부의 계정끼리만 메일을 전달할 수 있다. (Localhost Only)

원격에서 접속할 수 있게 sendmail.mc 를 바꾸어 준다. /etc/mail/sendmail.mc 를 열고 다음줄을 찾아서 바꾸어준다.

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl

인 부분을

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl

확인

 telnet 127.0.0.1 25
help
quit
$ telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 ubuntu ESMTP Sendmail 8.14.4/8.14.4/Debian-2ubuntu2; Tue, 24 Sep 2013 22:32:18 +0900; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
help
214-2.0.0 This is sendmail version 8.14.4
214-2.0.0 Topics:
214-2.0.0       HELO    EHLO    MAIL    RCPT    DATA
214-2.0.0       RSET    NOOP    QUIT    HELP    VRFY
214-2.0.0       EXPN    VERB    ETRN    DSN     AUTH
214-2.0.0       STARTTLS
214-2.0.0 For more info use "HELP <topic>".
214-2.0.0 To report bugs in the implementation see
214-2.0.0       http://www.sendmail.org/email-addresses.html
214-2.0.0 For local information send email to Postmaster at your site.
214 2.0.0 End of HELP info
quit
221 2.0.0 ubuntu closing connection
Connection closed by foreign host.

콘솔로 메일 쓰기

mail user1  // 이렇게 하면 동일 서버의 user1 에게 편지를 쓰는 것이다.
mail [email protected]   //외부로 메일 쓰기
Subject: test     <--제목이다.
hi user1          <--본문내용이다.
.                 <--글마침 표시이다.
Cc:               <--참조 이다.  (주)메일을 함께 읽을 메일 주소를 적어 주는 부분이다.

. 만 입력하거나, ctrl-d를 입력하면 완료된다.

콘솔로 메일 읽기

mail

외부메일 받기

도메인의 MX 레코드 설정이 되어 있어야 하고, 포트 25번 (smtp)가 열려 있어야 한다. DNSEVER에서 MX 설정란에 서버도메인명을 넣도록 한다. ip주소는 안된다.

기타

메일이 오면 /var/mail 에 아이디 파일명으로 저장된다. 콘솔로 로긴하여 mail명령어로 확인할 수 있다.

메일을 읽고 나면 읽은 메일은 각 계정의 홈폴더에 mbox라는 파일에 덧붙여 저장된다.

공유기를 사용중이고 외부메일을 받으려면 포트를 열어줘야 한다. 25 (smtp), 110 (pop3) 을 필요에 따라 열어준다.

이메일 포워딩

중앙집중 (alias)

/etc/mail/aliases

파일을 보면

#
# Mail aliases for sendmail
#
# You must run newaliases(1) after making changes to this file.
#

# Required aliases
postmaster:     root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:          postmaster
spam:           postmaster

# Other aliases
test:           "| /home/script/todo.php"

설정된 도메인의 해당 이름으로 오는 메일을 다른 곳으로 전달하게 된다.

수정 후 sudo newaliases명령을 실행해줘야 등록되며, 작동이 된다.

[email protected] 으로 오는 메일은 [email protected] 으로 전달된다. 목표계정이 꼭 내부계정일 필요는 없으며,

root:     [email protected]

이런식으로 외부메일로 해도 된다.

계정별

각각의 계정의 홈폴더에

.forward

라는 파일을 생성하여 메일주소 (컴마로 분리) 를 넣어놓으면 그 계정으로 오는 메일을 다른 주소로 전달할 수 있다.

/home/test/.forward
[email protected]

이런식임.

호스트네임 문제

간혹 Sendmail을 실행하면 무지하게 느리게 뜨며 로그를 보면 다음과 같은 로그나 남는 경우가 있다.

Jan 23 04:02:08 svc-web sendmail[13139]: My unqualified host name (svc-web) unknown; sleeping for retry
Jan 23 04:03:08 svc-web sendmail[13139]: unable to qualify my own domain name (svc-web) -- using short name

이 경우 다음과 같이 /etc/hosts 파일의 full domain 을 설정하면 된다.

# <IP> <HOSTNAME>.<DOMAIN> <ALIAS>
127.0.0.1       vaslor.net
127.0.0.1       ubuntu
127.0.0.1       localhost
127.0.1.1       vaslor.net
192.168.0.6     vaslor.net

재시작하면된다. sudo reboot

참조

역링크