Monday, June 11, 2007

Qmail in Linux

Qmail is an SMTP (Simple Mail Transfer Protocol) Server for UNIX. This is the program that receives all incoming/outgoing mail for your domains.

Configuring QMail for @Mail

Find out the folder qmail lives in. On most linuxsystems this can be done by typing:
shell# locate qmail

The default folder for Qmail is /usr/local/qmail/.
Edit the control/virtualdomains file, and enter the domains you want qmail to accept email for and which folder to assign for it's incoming email.


myfirstdomain.com myfirstfolder-com
myseconddomain.com mysecondfolder-com
mythirddomain.com mythirdfolder-comFoldernames must be created in the Qmail mailnames folder

shell# mkdir /path-to-qmail/mailnames/myfirstfolder-com/ shell# mkdir /path-to-qmail/mailnames/mysecondfolder-com/ shell# mkdir /path-to-qmail/mailnames/mythirdfolder-com/

Finally, in order to make the email for the folders forward the email to @Mail, create a file called .qmail-default in the folders containing the following line:
/path-to-atmail/saveemail.pl $RECIPIENT

The $RECIPIENT must be included to tell the @Mail saveemail.pl script which user the email is intended for.
Once the .qmail-default file is created you can restart qmail and test your installation.

Restarting Qmail
If you are running linux, find out which rc file starts and stops qmail. These scripts are usually located in the /etc/rc.d/ folder or in the /etc/rc.d/init.d/, /etc/init.d/ folders. Find the script that starts up qmail and do a restart.

shell# /etc/rc.d/init.d/qmail stop
shell# /etc/rc.d/init.d/qmail start

Next, use the ps command to check if qmail is running.
shell# ps aux grep qmail
qmails 20750 0.0 0.1 1460 400 pts/1 S Aug06 0:00 qmail-send
qmaill 20762 0.0 0.1 1408 452 pts/1 S Aug06 0:00 splogger qmail
root 20763 0.0 0.1 1432 364 pts/1 S Aug06 0:00 qmail-lspawn ./Ma
qmailr 20764 0.0 0.1 1428 368 pts/1 S Aug06 0:00 qmail-rspawn
qmailq 20765 0.0 0.1 1392 328 pts/1 S Aug06 0:00 qmail-clean

Testing Email Delivery
Telnet to your machine on port 25 to send an email message manually. During this test phase, use your own email address as the sender. Debugging information will be sent to you if the message fails
First create a new account in @Mail, and test the email delivery to the account.

shell# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 hostname ESMTP
mail from:
you@email.com
250 ok
rcpt to:
user@domain.com
250 ok
data
354 go ahead
test
.
250 ok 1028743136 qp 24920
quit
221 hostname
Connection closed by foreign host.

In this example you will have to give the mail from, rcpt to and data commands manually. Correct spelling of those is required. After the data command give a dot (.) on a single line to return. Use the quit command to get back to your shell.
If successful the user
user@myfirstdomain.com will receive a message with the text 'test' in the email body. If the email doesn't get received by this user, check out your maillog (usually /var/log/maillog , or /var/log/mail), or any email qMail might send back to your email address.

Testing the @Mail delivery script
If the above example fails, run the @Mail delivery script manually. shell# /path-to-atmail/saveemail.pl "user@domain.com"
Type a message then hit ^D (Control D) to quit.
Now check the users email account in @Mail, and check the message has been received. If you receive the message, but sending via the SMTP server does not work, check your qmail configuration.

No comments:

web counter