当前位置:Linux教程 - Linux - Qmail+MH (下)

Qmail+MH (下)

5.Fetchmail
由于用户很多(我的整个家庭),所以我决定使用fetchmail。Linux 和 fetchmail把mail发送到接收 qmail的smtp port。
安装应该没什么问题,按以下步骤便行。
fetchmailrc:
poll PersonalMail.Germany.EU.net
protocol pop3
username myname
password mypassword
# the next two lines do the trick for multidrop
localdomains mydomain.de
is * here
# T2 of the fetchmail FAQ states that qmail needs this
forcecr

6.exmh
这是我选择的mailer。我很喜欢它。
只存在一个麻烦----大多数的高级汇编TCL/TK包裹编译了安全条款。而随着SuSE的出现,xserverrc在确保安全的前提下解决了这个麻烦。
____________________________________________________________________

#!/bin/sh

#
# move this file to ~/.xserverrc, if you don''t want to allow everybody to
# get access to your X-Server
#
if [ -x /usr/bin/keygen ]; then
if [ ! -x /usr/bin/hostname -a ! -x /bin/hostname
-a ! -x /usr/bsd/hostname ];
then
echo "startx: can''t get my hostname - exiting"
exit 1
else
host=``hostname``
fi

xauth add $host:0 . ``/usr/bin/keygen``
sleep 2
xauth add $host/"unix":0 . ``/usr/bin/keygen``
exec X :0 -auth .Xauthority $*
else
exec X :0 $*
fi
______________________________________________________________________


7.Procmail
qmail FAQ 有以下要求:
In /.qmail add the line
| preline procmail
3.11per7 的版本改变了默认邮箱的一些内容。它以前在config.h文件中,而现在在src/authenticate.c文件中:
#define MAILSPOOLHOME "/Mailbox" /* watch the leading / */
/* delivers to $HOME/Mailbox */
我精简合并了一些comp.mail.mh 和 comp.mail.misc的内容放在procmailrc 文件中,感谢各位提出宝贵意见!

#这是为新手准备的SAMPLE.PROCMAILRC 文件
#由Catherine Hampton([email protected])编写
#版本1.1
#更新日期1/25/98
#
#向公众免费发放
#
#
#SET VARIABLES
#Internal Variables
#以下经rdn 于19980303修改
#有关人士称SHELL的工作环境是高效率的
SHELL=/bin/sh (Shell用来运行procmail。确信你的系统已经备份。不要用其他的shell替换除非你对UNIX了如指掌。)
LINEBRF=4096 (用来不让Procmail在长时间运行后或在处理特殊邮件时出现窒息现象。)
PATH=$HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/mh:/usr/lib/mh: (你程序的路径----这一项空缺可能最好)
VERBOSE=off (如果你选“on”,那么Procmail 将对所执行的每一步都检测错误。注意,不要选择“on”,因为它会生成一个很庞大的检测文件。)
#默认程序和文件定位
MAILDIR=$HOME/Mail (你最好确信这个目录存在。)
DEFAULT=$HOME/Mailbox (Best Internet上的默认情况是2-5个shell邮箱的使用者。个人可以按自身的不同为系统选择正确的设置。)
LOGFILE=$MAILDIR/procmail.log (检测信息的处理,推荐照此设定----否则出错信息会mail给你。)
FORMAIL=/usr/bin/formail (非常有用的自动回复技巧。如果你不在Best Internet上,更改formail系统拷贝上的此项信息自动回复邮件。)
SENDMAIL=/usr/sbin/sendmail (非常有用的自动回复技巧。如果你不在Best Internet上,更改sendmail系统拷贝上的此项信息自动回复邮件。)
Procmail 是一个非常优秀的文档程序。请无比仔细阅读以上内容作为参考来设置你的procmailrc文件。


8.ISDN
尽管此项看似与与qmail或mh有关,我还是整理了。因为若你的ISP没有PPP线就根本无email可言。我在使用我的ISDN中遇到了相当大的麻烦。SusE包含一个专门为ISDN准备的部分,但我想更简单些。以下材料是由Bernhard Hailer更新的。
以下的的rc.config文件装载了初始化的必要组元。

#!/bin/bash
# This is adapted Bernhard Hailer''s old script

LOCAL_NUMBER="91311234" # tel no. 091311234
REMOTE_NUMBER="0911123456" # ISP tel no.
LOCAL_IP="192.168.0.99" # I have dynamic IP so this will do
REMOTE_IP="195.112.123.11" # your ISP''s gateway
DEVICE="ippp0"

SYSPATH="/sbin"
ISDNCTRL="$SYSPATH/isdnctrl"

case "$1" in
start)
# turn on isdn
insmod /lib/modules/2.0.33/net/slhc.o
insmod /lib/modules/2.0.33/misc/isdn.o
sleep 1
# load the hisax module
insmod /lib/modules/2.0.33/misc/hisax.o
id=Tel0 type=5 protocol=2 irq=10 io=0x300
echo "starting isdn4linux"
# global
$ISDNCTRL verbose 0

$ISDNCTRL addif $DEVICE # create new interface
$ISDNCTRL addphone $DEVICE in $REMOTE_NUMBER
$ISDNCTRL addphone $DEVICE out $REMOTE_NUMBER
$ISDNCTRL eaz $DEVICE $LOCAL_NUMBER
$ISDNCTRL l2_prot $DEVICE hdlc
$ISDNCTRL l3_prot $DEVICE trans
$ISDNCTRL encap $DEVICE syncppp
$ISDNCTRL huptimeout $DEVICE 300
$ISDNCTRL chargehup $DEVICE off
$ISDNCTRL secure $DEVICE on

$SYSPATH/ifconfig $DEVICE $LOCAL_IP pointopoint $REMOTE_IP metric 1
$SYSPATH/route add default $DEVICE
$SYSPATH/ipppd /dev/ippp0 file /etc/ppp/options.ipppd &
$SYSPATH/route del default

;;
stop)
#turn off isdn
rmmod hisax.o
sleep 1
rmmod isdn.o
rmmod slhc.o
echo "Shutting down isdn4linux"
$ISDNCTRL delif ippp0
;;
*)
echo "Usage: $0 (start|stop)"
exit 1
;;
esac

我用以下技巧拨号,它被称为简洁的isdn on|off

#!/bin/bash
# This is based on an old script from Bernhard Hailer

IP_ADDRESS="195.112.123.11"

case "$1" in
on)

echo "Calling ippp0"
/sbin/isdnctrl dial ippp0
# the sleep is important as it gives the PPP time to settle down
echo "Sleep for 8s for PPP handshake"
sleep 8s
/sbin/route add default ippp0
echo "line open - checking...."

# check whether PPP negotiation was successful:
set ``ping -qc3 -i1 $IP_ADDRESS 2>/dev/null | grep transmitted``
if [ $4 -gt 0 ];
then
echo "succeeded."
echo "Starting fetchmail daemon"
/usr/bin/fetchmail -d 600 -k -v -a -L /var/log/fetchmail
echo "Flushing mail queue...."
/usr/local/bin/serialmail/maildir2smtp
~alias/pppdir alias-ppp- mail.server.ip.no ``hostname``
else
echo "failed!"
/sbin/isdnctrl hangup ippp0
fi

;;

off)
echo -n "Shutting down fetchmail daemon"
/usr/bin/fetchmail --quit

/sbin/isdnctrl hangup ippp0
/sbin/route del default # and delete route
echo "You''re off line"
;;

*)
echo -e "aUsage:"
echo "isdn on"
echo "isdn off"
;;

esac


接下来的是 ipppd选项文件/etc/ppp/options.ipppd
#基于:
#Klaus Franken,[email protected]
#版本:27。08。97 (5。1)
#
#该文件由YaST在/etc/ppp/ioptions.YaST 拷贝至optiongs.<device>

user“myrserid”

#我的系统名(只在CHAP上使用!)
# name my_system_name
#从peer处得到IP地址
ipcp-accept-local
ipcp-accept-remote
noipdefault

#试着从interface处得到IP地址
#ipppd的特定选项(比如与pppd的冲突)
#只能使用静态IP
#useifip

#把所有的header-compression都设为disable
-vj
-vjccomp
-ac
-pc
-bsdcomp
#有时你需要这个:
#noccp

#最大接受数
mru 1524
#最大传送数
mtu 1500

#如果你的机器是服务器,就要求签证以下未注释的条项。然而,如果你的机器是客户机,做了以上的事就不会成功连接!(信息将提示“peer refused to authenticate”即peer 拒绝签证)所以,只有在服务器上对于未注释的部分做以下步骤:
# "+pap" / "+chap" NUR AKTIVIEREN, WENN DIES EIN SERVER IST!!!
#+pap
#+chap

#如果你对handshaking有什么问题(比如第一次lcp-package没响应)可以试试减少重试次数,默认情况下是3 sec,试试2 sec:
# lcp-restart 2


9.源文件
请求包裹:
互联网是如此高速发展,以至于提供源文件变得毫无意义。但在某些时候它是有价值的:
Qmail的相关内容 http://www.qmail.org/
NH的相关内容 http://www.ics.uci.edu/~mh/
glimpse的相关内容 http://glimpse.cs.arizona.edu/
Fetchmail的相关内容 http://sagan.earthspace.net/~esr/fetchmail
Exmh的相关内容 http://www.beedub.com/exmh
Procmail的相关内容 ftp.informatik.rwth-aachen.de/pub/packages/promail