王朝网络
分享
 
 
 

QMAIL+MH设计方案

王朝other·作者佚名  2008-05-31
宽屏版  字体: |||超大  

那些想要为他们的EMAIL使用以上组合的用户,我归纳了一些安装经验来为他们提供某些帮助。我刚得到了一些新的关于LINUX管理信息,所以决定更新这期MINI-HOWTO。

1.介绍

什么是QMAIL?我们该怎样正确使用它?以下将给出一些解释说明。

QMAIL是一个安全、可靠、高效、简洁的信息传送的代理。它现在完全替代了典型互联网上以unix作为平台的主机上发送-接收的系统。

安全:安全不仅仅是一个目标,而且无疑是一个需要。用户对发送邮件的要求很高;它不能出一点差错,所以必须绝对安全可靠。(这就是我为什么开始使用QMAIL:我对其他的邮件发送系统的诸多安全漏洞感到非常不安。)

可靠:QMAIL采用"straight-paper-path"的设计"哲理", 保证了一个信息一旦被系统接收,就永不丢失。QMAIL也支持MAILDIR功能,一个全新的、超稳定的用户邮箱格式。MAILDIRS,不像MBOX文件和MH文件夹在接收邮件时,如果系统出错会导致接收中断。更好的是,用户不仅可以安全的在NFS(网络文件系统)上读取他的邮件,而且与此同时,任何其他NFS的客户端也可以向他发送邮件。

高效:在一个BSD/OS的PENTIUM机上,QMIAL每天可以轻易地支持200000的本地信息分开处理邮箱中信息的发送与接收!虽然DNS(域名服务器)和SMTP的远程发送原本就有速度慢的局限性,QMAIL可以在默认状态下同时发送20封邮件,所以相比下它能风驰电掣地快速通过邮件列表。(这就是我为什么使用QMAIL,我必须建立庞大的邮件列表。)

简洁:QMAIL比其他任何互联网的MTA占用的空间都要小得多。这是因为:(1) 其他的MTA系统采用单独解析、匿名和邮件列表的机制。而QMAIL采用一个简化了的解析机制,它允许用户处理他们自己的邮件列表。(2) 其他的MTA是这样的发送模式:或者快速+不安全,或者缓慢+队列。而QMAIL,在队列中一旦有新消息的出现,就立即发送,所以QMAIL的发送模式只能是:快速+队列。(3) 其他MTA系统实际上包含了一个特别的inetd的版本,它能减少机器的负荷。而QMAIL的设计根本上减少了机器的负荷,因此QMAIL发送系统能在您的机器上安全运行。

替代SENDMAIL的发送邮件:QMAIL支持主机和用户的匿名、完全隐藏主机、虚拟域名、无效客户、拥有者列表的重写、终继控制、可恢复的双重记录、严格的RFC 822地址列表、交叉主机邮件列表的循环侦测、每个接受端的检查点、出故障主机的备份恢复、独立进行信息的重试调度等等。简而言之,它在现代MTA中以快速的特点一枝独秀。QMAIL也包括可以透明地面对众多用户的发件箱。

2.QMAIL的安装

正确依照安装说明的步骤。

注意:请花时间完整地阅读安装说明文件。在以上安装文件中有表示安装步骤的数字。

2.1 Maildir2smtp

Dan Bernstein已经提供了通过拨号向ISP发送一系列邮件的程序包。这个程序包用来作为从它的站点发送的系列邮件。

这个程序包安装在此人(感谢Rupert Mazzucco(maz@pap.univie.ac.at))网页详细阐述,maildir2smtp - 通过SMTP发送一个maildir。maildir2smtp是设计用来在一个SLIP或者PPP链路上传递报文的。为了在无连接的终端建立maildir2smtp,用匿名创建一个新的maildir:

# maildirmake ~alias/pppdir

# chown -R alias ~alias/pppdir

:alias-ppp

加入

control/virtualdomains

./pppdir/

加入

~alias/.QMAIL-ppp-default

不要忘了在pppdir/中附加的删减。然后,在PPP开始文本中,作如下操作:

maildir2smtp ~alias/pppdir alias-ppp- $IP `hostname`

把$IP替换为远端IP地址。

注意:请完整地阅读正确操作的说明书。

Maildir2smtp需要你邮件服务器的IP地址。如果你没有这个IP地址,你可以检测YourMail.host.country来返回你邮件服务器的IP地址。

这个命令包含在你的登陆文本中,在你登陆到你的互联网服务提供商ISP后,刷新所有队列邮件。

3.MH的安装

除了这种设置外,我也把/mh-6.8.4/mts/sendmail/smail.c替换为Dan Bernsteins mh-QMAIL-smail.c。

以下是我的mh-6.8.4/conf/MH设置。

bin /usr/bin/mh

etc /usr/lib/mh

#mail

#mandir /usr/man

#manuals standard

chown /bin/chown

#cp cp

#ln ln

#remove mv -f

cc gcc

ccoptions -traditional -O2 -m486 -D_NFILE=getdtablesize()

-DSIGEMT=SIGUSR1

curses -lncurses

#ldoptions -s

#ldoptlibs

lex flex

#oldload off

#ranlib on

mts sendmail

#mf off

#bboards off

#bbdelivery off

#bbhome /usr/spool/bboards

pop on

popdir /usr/lib/mh

sharedlib sys5

slflags -fPIC

slibdir /usr/lib

mailgroup mail

signal void

sprintf int

#editor prompter

#debug off

#regtest off

options ATHENA

options BIND

options DPOP

options DUMB

options FCNTL

options MHE

options MHRC

options MIME

options MORE="/usr/bin/less"

options OVERHEAD

options POP2

options POPSERVICE="pop3"

options RENAME

options RPATHS

options RPOP

options SOCKETS

options SVR4

options SYS5

options SYS5DIR

options TERMINFO

options UNISTD

options VSPRINTF

注意:

我只编译了在comp.mail.mh中的``mts sendmail,其中/smtp 会引起一些问题。Dominic Mitchell(hdm@demon.net)在comp.mail.mh (13 June 1997)中写道:"用这个选择,MH仍然可以通过一个管道,而不是网络用SMTP通话。你确实需要在你的/.mh_profile加入一行:

postproc: /usr/local/nmh/lib/spost

或者无论以什么方式存在于你的系统上,它都将以传统方式把报文直接传送到sendmail,你确实在使用QMAIL,因此sendmail将成为QMAIL的包文本,这就可以了。"

3.1 mtstailor

因为QMAIL发送又见到默认目录(~/Mailbox)。我把下列设置加入到我的mtstailor。

localname: mickey

localdomain: n.eunet.de

mmdfldir:

mmdflfil: Mailbox

uucpldir:

uucplfil:

mmdelim1: 01010101

mmdelim2: 01010101

mmailid: 0

umincproc:

lockldir:

sendmail: /usr/lib/sendmail

注意:sendmail: /usr/lib/sendmail是连接到在/var/QMAIL/bin中的QMAIL SENDMAIL包的路径。

MH不像音标符号(~/),而是使用/home或者根据文本默认的$HOME置空格。

我最近在办公室里的一台连接到以太网电脑上安装了MH和QMAIL。我在mtstailor里加入了以下一行:

servers: mailserver.company.country

3.2 mh_profile

以下是我的.mh_profile设置

Path: Mail

draft-folder: drafts

unseen-sequence: unseen

AliasFile: /home/rdn/.mh_aliases

send: -msgid

comp: -form /home/rdn/.mymh-components

MailDrop: /home/rdn/Mailbox

注意:我加入"收件箱"一行,为了保证邮件的接收.

4.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

5.exmh

这是我选择的mailer。我很喜欢它。

只存在一个麻烦----大多数的高级汇编TCL/TK包裹编译了安全条款。而随着SuSE的出现,xserverrc在确保安全的前提下解决了这个麻烦。

#!/bin/sh

#

# move this file to ~/.xserverrc, if you don 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 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

6.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(ariel@best.com)编写

#版本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文件。

7.ISDN

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

以下的的rc.config文件装载了初始化的必要组元。

#!/bin/bash

# This is adapted Bernhard Hailers 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 ISPs 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 %26amp;

$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 e off line"

;;

*)

echo -e "aUsage:"

echo "isdn on"

echo "isdn off"

;;

esac

接下来的是 ipppd选项文件/etc/ppp/options.ipppd

#基于:

#Klaus Franken,kfr@srse.de

#版本:27。08。97 (5。1)

#

#该文件由YaST在/etc/ppp/ioptions.YaST 拷贝至optiongs.

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

,

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有