SimpleMailTransferProtocol

메일을 주고받기 위해 사용하는 [[TCP]]/[[IP]]프로토콜. 서버들 사이에서 E-mail을 전송하고 받기 위해서 일반적으로 이용된다.

포트25번을 사용하며, 클라이언트가 요청/응답의 간단한 대화를 통하여 SMTP서버와 연결을 만들고, 메세지를 보내는 사람과 받는사람(들)의 메일주소를 전송한다. 서버가 메일주소를 받아들이면 그때 클라이언트가 메세지를 전송한다.

항상 인터넷에 연결되어 있지 않은 호스트들을 위해 [[POP3]]는 우체국처럼 작업한다.

대표적인 프로그램으로
 * Mail User Agents
  * [[Eudora]]
  * NescapeMail
  * [[Mush]]
  * ElmPine
  * ThunderBird
 * Mail Transfer Agents
  * SendMail
  * NetscapeMailServer
  * MicroSoftMail
  * [[Smail]], [[Zmail]], [[MMDF]]
  * [[Qmail]]
  * PostFix
 * Mail Delivery Agents
  * ProcMail

메일서버를 돌리려면, pop, imap서버가 따로 필요하다. (특히, PostFix의 경우) 
 * [[Dovecot]]
 * [[Cyrus]]

웹메일 프로그램
 * SquirrelMail

웹메일 서비스
 * [[Gmail]]
  
== UbuntuLinux, DDNS환경에서 메일서버 세팅하기 ==

UbuntuLinux, [[DDNS]]환경에서 PostFix, [[Dovecot]], SquirrelMail으로 메일서버 세팅하기. (꽤 까다로운 점이 있었는데, 원래 도메인으로는 안되던것. mail. 호스트를 따로 지정해야만 동작했다.) -- [[yong27]] <<DateTime(2005-11-04T00:38:22Z)>>

{{{
# apt-get install postfix
# apt-get install dovecot
# apt-get install squirrelmail
# vi /etc/postfix/main.cf
myhostname = mail.mydomainname
# vi /etc/dovecot/dovecot.conf
# squirrelmail-config
}}}

== Python 메일발송 ==

메일발송 스크립트. (여기서 msg.txt의 첫 라인은 제목으로 처리됨)
{{{#!python
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import smtplib, sys
from email.MIMEText import MIMEText

Usage = "./bulkmail.py address.txt < msg.txt"
try:
    addressFileName = sys.argv[1]
except IndexError:
    print Usage
    sys.exit(1)

toEuckr = lambda s: unicode(s, 'utf-8').encode('euc-kr')
server = smtplib.SMTP('biohackers.net')
#server.set_debuglevel(1)
fromaddr = toEuckr('김형용 <yong27@bh.net>')
subject = toEuckr(sys.stdin.readline())
contents = toEuckr(sys.stdin.read())
for line in file(addressFileName):
    toaddr = line.strip()
    sys.stdout.write(toaddr+'... ')
    msg = MIMEText(contents,'plain','euc-kr')
    msg['From'] = fromaddr
    msg['To'] = toaddr
    msg['Subject'] = subject
    server.sendmail(fromaddr, toaddr, msg.as_string())
    sys.stdout.write('completed\n')
server.quit()
}}}