Säker, snabb och lätt att använda. Detta är den MTA (Mail Transport Agent) som jag föredrar.
För närvarande så inkluderas qmail inte i någon distribution av Linux, så vi skall fokusera på att kompilera och installera qmail, eftersom det är det enda som är lite besvärligt. Konfigurationen är ganska okomplicerad.
Gå till http://www.qmail.org för att ladda ner den senaste versionen.
Packa sedan upp den genom att köra:
mv qmail.tar.gz /usr/local/src
cd /usr/local/src ; tar -zxvf qmail.tar.gz
Om du hittar en bz2 version (nytt och bättre kompressionsformat), ersätt bara tar med:
bunzip2 qmail.tar.bz2
tar -xvf qmail.tar
Gå nu in i qmail katalogen och titta på den förinställda konfigurationen:
cd qmail; more conf-*
Du bör inte behöva ändra några förinställda värden, men du kan till exempel ange en alternativ katalog för installationen eller bättre kompileringsflaggor.
Kör nu:
mkdir /var/qmail
för att skapa målkatalogen.
Om du inte har installerat en Debian distribution så behöver du lägga till qmail användare; qmails höga säkerhet är beroende av detta.
Ingen kommer att kunna förstöra hela ditt e-postsystem eller få root-access eftersom qmail är uppdelat i moduler som var och en kör under sitt eget UID.
Så kör:
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias alias
# useradd -g nofiles -d /var/qmail qmaild
# useradd -g nofiles -d /var/qmail qmaill
# useradd -g nofiles -d /var/qmail qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail qmailq
# useradd -g qmail -d /var/qmail qmailr
# useradd -g qmail -d /var/qmail qmails
eller ändra /etc/passwd
och /etc/group
för hand så att dessa användare läggs till. Du kan
till exempel lägga till:
qmail:*:2107:
nofiles:*:2108:
&
alias:*:7790:2108::/var/qmail/alias:/bin/true
qmaild:*:7791:2108::/var/qmail:/bin/true
qmaill:*:7792:2108::/var/qmail:/bin/true
qmailp:*:7793:2108::/var/qmail:/bin/true
qmailq:*:7794:2107::/var/qmail:/bin/true
qmailr:*:7795:2107::/var/qmail:/bin/true
qmails:*:7796:2107::/var/qmail:/bin/true
Nu kan du köra
make setup check
för att testa din konfiguration, sedan:
./config
för att konfigurera qmail.
Nu måste du installera några alias, eftersom /etc/alias inte används av qmail om du inte kompilerar och installerar något valfritt paket.
Här är mina inställningar:
File : ".qmail-MAILER-DAEMON"
&postmaster
File : ".qmail-bin"
&root
File : ".qmail-daemon"
&root
File : ".qmail-decode"
&root
File : ".qmail-dumper"
&root
File : ".qmail-games"
&root
File : ".qmail-ingres"
&root
File : ".qmail-mailer-daemon"
&postmaster
File : ".qmail-manager"
&root
File : ".qmail-news"
&root
File : ".qmail-nobody"
&root
File : ".qmail-operator"
&root
File : ".qmail-postmaster"
&root
File : ".qmail-root"
&guylhem
File : ".qmail-system"
&root
File : ".qmail-toor"
&root
File : ".qmail-uucp"
&root
File : ".qmail-uucp-default"
|preline -dr /usr/bin/uux - -r -gC -a"${SENDER:-MAILER-DAEMON}" lm!rmail "($DEFAULT@$HOST)"
Du måste skapa var och en av dessa filer i ~alias
, och ersätta &guylhem
i .qmail-root
med ditt eget användarnamn för att få root-e-post.
VARNING ALLA UUCP ANVÄNDARE !
LITA INTE PÅ QMAIL FAQ OM DU ANVÄNDER UUCP, ANVÄND MIN .qmail-uucp-default ISTÄLLET! ANNARS KOMMER DU INTE KUNNA SKICKA E-POST VIA DIN UUCP ANSLUTNING!
Nu måste du bestämma i vilket format dina användare skall få sin e-post.
Här är mitt förslag:
För att fixa standardformat, läs alla filer i /var/qmail/boot
, kopiera sedan den du tycker bäst om
till /var/qmail/rc
.
home
eller proc
är säkra val, men jag föredrar home
av säkerhetsskäl.
I /var/qmail/control, editera :
barberouge.linux.lmm.com
lokalanätverket
så att all e-post som sänds till
joe@hansdator kommer att kompletteras och skickas till joe@hansdator.lokalanätverket istället.
me
) om den slutar med ett plustecken.Följande tre exempel visar hur kraftfullt och lättkonfigurerat qmail är:
Om du vill stödja virtuella domännamn, skriv in ytterligare namn i dessa filer.
All e-post som du tar emot för dessa namn kommer att hanteras lokalt.
Skillnaden mellan locals
och rcpthosts
är att den senare ses som ett lokalt alias, vilket är
användbart om du får mail från någon fri e-postadress som yahoo.com eller lemel.fr samtidigt som du även
skickar e-post till andra användare av dessa icke-lokala tjänster, dvs du vill inte hantera e-post som sänds
till någon@yahoo.com lokalt.
Här kan du specificera standardläget för utgående e-post, till exempel:
#:alias-uucp
om du inte vill skicka utgående e-post med uucp utan med smtp (standard) eller
:alias-ucp
om du skickar utgående e-post med uucp.
Nu är det konfigurerat, prova:
sh -cf '/var/qmail/rc &'
för att köra igång qmail (det kommer inte att störa din lokala MTA), sedan:
echo to: mylogin | /var/qmail/bin/qmail-inject
Du bör få detta i det format som du har valt i /var/qmail/boot/
.
Om denna testen var lyckad, så kan du döda din tidigare MTA:
killall -STOP daemon_name ; om några barnprocesser är igång så bör du göra killall -CONT deras_namn, wait, killall -STOP igen, och repetera ad nauseam.
Om det inte finns några barnprocesser, killall -TERM och sedan killall -CONT.
Tag sedan bort den (hur detta görs beror på vilken distribution du har, till exempel 'rpm -e --nodeps' i RedHat, Caldera och Suse, eller 'dpkg -r --force-depends' i Debian). Kör sedan:
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
Sätt sedan in qmail-smtpd i /etc/inetd.conf
(allt på en rad):
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
Om du använder en gammal icke-SYSV-init distribution som RedHat, lägg bara till följande i dina boot-skript:
sh -cf '/var/qmail/rc &'
Vanligtvis i /etc/rc.local
men inte helt säkert.
För en verkligt SYSV-init kompatibel distribution (RedHat, Caldera, Suse, Debian), lägg till följande skript
i /etc/init.d/
DEBIAN version:
#!/bin/sh
test -x /var/qmail/rc || exit 0
case "$1" in
start)
echo -n "Starting mta: "
sh -cf '/var/qmail/rc &'
echo "qmail."
;;
stop)
echo -n "Stopping mta: "
killall qmail-lspawn
echo "qmail."
;;
restart)
echo -n "Restarting mta: "
killall -HUP qmail-lspawn
killall -ALRM qmail-lspawn
echo "qmail."
;;
*)
echo "Usage: /etc/init.d/qmail {start|stop|restart}"
exit 1
esac
exit 0
REDHAT version :
#!/bin/sh
#
# qmail This shell script takes care of starting and stopping qmail.
#
# description: qmail is a Mail Transport Agent, which is the program \
# that moves mail from one machine to another.
# processname: qmail
# config: /var/qmail/control/
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
export PATH=$PATH:/var/qmail/bin
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/sendmail ] || exit 0
# See how we were called.
case "$1" in
start)
# Start daemons.
echo -n "Starting qmail: "
qmail-start '|preline procmail' splogger qmail &
touch /var/lock/subsys/qmail
echo
;;
stop)
# Stop daemons.
echo -n "Shutting down qmail: "
killproc qmail-lspawn
echo
rm -f /var/lock/subsys/qmail
;;
restart)
$0 stop
$0 start
;;
status)
status qmail
;;
*)
echo "Usage: qmail {start|stop|restart|status}"
exit 1
esac
exit 0
Gör sedan symboliska länkar till varje /etc/rcN.d/
, till exempel:
ln -sf /etc/init.d/qmail /etc/rc1.d/K19qmail
Om den första bokstaven är K, så kommer qmail att dödas i denna runleveln (1 för "single mode" eller 6 för "boot"), men om den första bokstaven är S så kommer qmail att startas i denna runleveln (alla andra runlevels).
RedHat, Caldera och Suse använder /etc/rc.d/
istället för bara /etc/
som Debian, dvs
/etc/rc.d/rc1.d/
eller /etc/rc.d/init.d/
till exempel.
Du behöver inte starta om (kom ihåg, du kör linux, inte något annat billigt OS !) för att ändringarna skall bli gällande, kör bara:
killall inetd
init 1
För att gå till 'single user'-läge, sedan:
init 2
för att gå tillbaka till din standard-runlevel (som står specificerad i /etc/inittab
med texten
"initdefault").
Du kan även starta qmail-skriptet för hand, men om du gör som ovan så märker du om skriptet är bra placerat, dvs det körs efter nätverks-skripten men innan eventuella program som beror av e-post (som inn).