Debian Lenny に sendmailを導入

Debian Lenny に sendmailを導入する

※とりあえず動かすには、ローカル配送(procmail)の設定がポイントです。

■sendmailのインストール

$ sudo apt-get install sendmail-bin

■デーモンの稼動チェック

$ ps -ef | grep sendmail | grep MTA | cut -c 49-
sendmail: MTA: accepting connections

■リッスンポートを確認。とりあえずlocalhostで繋がりそうです。

$ netstat -an | grep \:25
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

$ netstat -a | grep \:smtp
tcp 0 0 localhost:smtp *:* LISTEN

■自分宛てにテストメール

$ telnet localhost 25
ehlo localhost
mail from:labunix@vm-mldebian.labunix.net
rcpt to:labunix@vm-mldebian.labunix.net
data
From:labunix
Subject: mail from labunix
To: labunix

Sun Sep 18 19:29:44 JST 2011

.
quit

■sendmailサーバの応答箇所の確認

250-vm-mldebian.labunix.net Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP


■syslog、maillogの確認
 ※ローカル配送も出来ていません。

$ sudo grep stat= /var/log/syslog | awk -F\, '{print $8}' | sort | uniq
stat=Operating system error

■procmailが無いかPATHが通っていないエラーについて
 ※procmail自体は導入されていることを確認

参考:http://www.turbolinux.com/support/document/knowledge/296.html

$ dpkg -l procmail | grep ^i
ii procmail 3.22-16 Versatile e-mail processor

$ whereis procmail
procmail: /usr/bin/procmail /usr/share/man/man1/procmail.1.gz

■dovecotを導入

$ sudo apt-get install dovecot-common dovecot-pop3d dovecot-imapd

■popのリッスンポートの確認

$ netstat -an | grep "\:110\|\:995"
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN

$ netstat -a | grep "\:pop"
tcp 0 0 *:pop3s *:* LISTEN
tcp 0 0 *:pop3 *:* LISTEN

■imapのリッスンポートの確認

$ netstat -a | grep "\:imap"
tcp 0 0 *:imaps *:* LISTEN
tcp 0 0 *:imap2 *:* LISTEN

$ netstat -an | grep "\:143\|\:993"
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN

■pop3から受信チェック
 ※telnetから発信したメールは届いてません。

$ telnet localhost 110
user labunix
pass XXXXXXXX
list
retr 1

〜省略〜
Auto-Submitted: auto-generated
Subject: *** SECURITY information for vm-mldebian.labunix.net ***
From: labunix 
Message-Id: 
Date: Sun, 18 Sep 2011 19:03:09 +0900

vm-mldebian.labunix.net : 918 19:03:08 : labunix : user NOT in sudoers ; TTY=tty1 ; PWD=/home/labunix ; USER=root ; COMMAND=/etc/init.d/ssh restart

.
〜メール本文終わり〜
quit

■procmailに関するsendmail.mc の編集

$ sudo cp -pi /etc/mail/sendmail.mc /etc/mail/sendmail.mc.org
$ sudo vim /etc/mail/sendmail.mc

$ sudo grep procmail /etc/mail/sendmail.mc
FEATURE(`local_procmail',`/usr/bin/procmail')dnl
MAILER(`procmail')dnl

■メールキューの確認

$ mailq | head -5
MSP Queue status...
/var/spool/mqueue-client is empty
Total requests: 0
MTA Queue status...
/var/spool/mqueue (2 requests)

■sendmailの再起動を行い設定を反映させる

$ sudo /etc/init.d/sendmail restart

■配送が出来ている事を確認

$ mailq
MSP Queue status...
/var/spool/mqueue-client is empty
Total requests: 0
You have new mail in /var/mail/labunix

$ sudo tail -f /var/log/syslog | grep stat= | awk -F\, '{print $8}'
stat=Sent

■メールクライアントのインストール

$ dpkg -l mailx
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)維持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(H)維持/(R)要再インストール/X=両方(状態,エラーの大文字=異常)
||/ 名前 バージョ 説明
+++-==============-==============-============================================
un mailx <なし> (説明 (description) がありません)

$ dpkg -l mailutils
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)維持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(H)維持/(R)要再インストール/X=両方(状態,エラーの大文字=異常)
||/ 名前 バージョ 説明
+++-==============-==============-============================================
un mailutils <なし> (説明 (description) がありません)

$ sudo apt-get install mailx mailutils

■コマンドからの受信メール確認

$ mail

■まとめ

デフォルトの最低限動くだけの設定ですので、DMZ内で試すレベルですのでご注意を。

・procmailの引数の設定は行ってません。
・smtpはlocalhostしかリッスンしていません。

■追記1

m4を実行したところ、MAILERの前にFEATUREを書くようにというメッセージが出たため、
その通りに順序を変更。
ついでにprocmailの引数も設定。

$ sudo /etc/init.d/sendmail reload
Reloading Mail Transport Agent (MTA): sendmail.
labunix@vm-mldebian:~$ sudo tail -12 /etc/mail/sendmail.mc dnl # Masquerading options
FEATURE(`always_add_domain')dnl
MASQUERADE_AS(`vm-mldebian.labunix.net')dnl
FEATURE(`allmasquerade')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`local_procmail',`/usr/bin/procmail')dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl

MAILER_DEFINITIONS
MAILER(`local')dnl
MAILER(`smtp')dnl
MAILER(`procmail')dnl


$ su root -c 'm4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf'

■追記2
 すべてのIPをリッスンするにはPort=smtpとsubmissionをコメントアウトするだけでした。

$ grep 127.0.0.1 /etc/mail/sendmail.mc
dnl DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
dnl DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl

$ su root -c 'm4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf'
$ sudo /etc/init.d/sendmail reload

$ sudo /etc/init.d/sendmail status
MSP: is run via cron (20m)
MTA: 11643 /usr/sbin/sendmail-mta -Am -L sm-mta -bd -q10m
UID PID PPID C STIME TTY TIME CMD
root 11643 1 0 23:07 ? 00:00:00 sendmail: MTA: accepting connections
Daemon Status: (process 11643) Accepting connections

Current number of children: 0
QueueDir free disk space (in blocks): 29088004
Load average: 0
Child Process 11691 Status: console socket child

QUE: Same as MTA

$ netstat -an | grep ":25"
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN

■追記

postfixからsendmailに入れ替えた際、bsd-mailxがコマンドメーラとしてインストール済みでした。
mailutilsも依存関係で一緒にインストールされます。

$ apt-get install bsd-mailx