برای راه اندازی این Mail Server روی لینوکس اوبونتو از سرویس های Postfix Dovecot و MySQL و SpamAssassin استفاده میکنیم . در صورت کانفیگ صحیح ، ایمیل های سرور شما اسپم نخواهد شد و مستقیما به Inbox خواهند رفت .
آموزش کانفیگ سرور ایمیل یا Mail Server به کمک Postfix, Dovecot, MySQL
آموزش کانفیگ سرور ایمیل یا Mail Server :
پیش نیاز ها :
یک آدرس دامنه پارک شده روی سرور
نصب سرویس MySQL Server
دسترسی Root
استفاده از Hostname ولید و معتبر
نصب سرویس ها :
ابتدا باید آخرین نسخه های پایدار سرویس های Postfix و Dovecot و MySQL و آنتی اسپمر SpamAssasin را روی سرور لینوکس نصب کنیم :
در هنگام نصب سرویس Postfix در لینوکس اوبونتو حتما گزینه internet Site را انتخاب کنید . در ادامه نصب ، Postfix از شما مشخصات FDQN را سوال میکند که باید Hostname ولید سرور را معرفی کنید .
ساختن دیتابیس MySQL و Virtual Domain و ساخت User :
ابتدا یک دیتابیس MySQL میسازیم و ۳ جدول در آن ایجاد میکنیم . یکی برای یوزر ها ، یکی برای دامنه ها و دیگری برای alias ها :
کار ساخت دیتابیس و جداول مربوط به آن تمام شد . مرحله بعدی ، وارد کردن اطلاعات مورد نظر به دیتابیس است .
ابتدا دامنه های مورد نظر خود را داخل جدول Virtual Domains مربوط به دیتابیس ساخته شده وارد میکنیم .
در مرحله بعدی اطلاعات مربوط به آدرس های ایمیل و کلمات عبور مربوط به هر آدرس را داخل جدول virtual_users وارد میکنیم :
و سر انجام alias های مربوط به هر آدرس ایمیل که عموما برای ایجاد Email Forwarder استفاده میشوند را داخل جدول virtual_aliases وارد میکنیم :
و به کمک دستور زیر از MySQL خارج میشویم :
کانفیگ Postfix :
در این مرحله با کانفیگ سرویس Postfix امکان هندل کردن کانکشن های SMTP و همچنین ارسال پیام و ایمیل برای تمامی یوزر های ساخته شده در دیتابیس Mail Server فراهم میگردد .
ابتدا مسیرفایل main.cf را تغییر داده و این فایل را ویرایش میکنیم :
و مقادیر آن را به شکل زیر تغییر میدهیم :
و سرو انجام این ۳ خط را به فایل اضافه کرده و فایل را ذخیره میکنیم :
در مرحله بعدی یک فایل به نام mysql-virtual-mailbox-domaincs.cf ایجاد کرده و مطابق زیر آن را ویرایش کنید :
و سر انجام سرویس Postfix را ریست میکنیم :
حالا تست میکنیم تا اطمینان حاصل کنیم سرویس Postfix دامنه مورد نظر شما را پیدا کرده و به درستی با حدول دامنه ها در دیتابیس ایمیل ها ارتباط برقرارمیکند . خروجی دستور زیر در صورت عدم وجود مشکل در کانفیگ Posftix عدد ۱ خواهد بود :
حالا فایلی به نام mysql-virtual-mailbox-maps.cf ایجا کرده و به شکل زیر آن را ویرایش کنید :
و مجددا postfix را ریستارت میکنیم :
و مجددا جهت اطمینان از دسترسی Postfix این بار به اطلاعات مربوط به آدرس ایمیل ها در جدول مربوطه دستور زیر را وارد میکنیم :
خروجی ۱ نشان دهنده کانفیگ صحیح و عدم وجود مشکل است .
آخرین فایل مربوط به ایجاد کانکشن بین Postfix و MySQL است :
و ریستارت کردن سرویس Postfix :
خروجی دستور زیر در محیط ssh درواقع forwarder های مربوط به alias مورد نظر را به شما نشان خواهد داد :
کانفیگ Dovecot :
قبل از آغاز کانفیگ سرویس Dovecot در لینوکس و محیط ssh دستورات زیر را اجرا کنید :
حالا فایل کانفیگ dovecot را ویرایش میکنیم :
و خط زیر را اصطلاحا uncomment میکنیم :
و تغییرات زیر را در فایل dovecot.conf اعمال کرده و فایل را ذخیره میکنیم :
در مرحله بعدی فایل مربوط به تنظیمات ایمیل را ویرایش میکنیم :
خط mail_location را پیدا کرده ، آن را uncomment میکنیم و پارامتر های زیر را به آن اضافه میکنیم :
حالا به دنبال خط mail_privileged_group میگردیم و آن را به این شکل تغییر میدهیم :
کانفیگ Postfix و Dovecot
بررسی دسترسی ها :
خروجی دستور زیر :
باید مشابه این باشد :
حالا به ازای هر دامنه ای که در دیتابیس اضافه کرده ایم یک پوشه در مسیر زیر میسازیم :
حالا یک گروه و یوزر جدید ساخته و مالکیت پوشه /var/mail را به آن تغییر میدهیم :
حالا فایل زیر را ویرایش میکنیم :
و مقادیر آن را به شکل زیر تغییر میدهیم :
در ادامه مراحل کانفیگ Mail Server یک فایل جدید ایجاد کرده و به این صورت ویرایش میکنیم :
ویرایش این فایل و انجام تغییرات و ذخیره تغییرات :
حالا مالکیت های مربوط به پوشه dovecot را نیز تغییر میدهیم :
در ادامه فایر /etc/dovecot/conf.d/10-master.conf را باز کرده و به این صورت ویرایش میکنیم :
سرویس dovecot را ریستارت میکنیم :
در آموزش بعدی ، نحوه جلوگیری از ارسال اسپم توسط Mail Server و همچنین پیشگیری کردن از Spam شناخته شدن آی پی سرور شما به کمک سرویس SpamAssasin را آموزش خواهیم داد .
نویسنده Babak Ajideh
آموزش کانفیگ سرور ایمیل یا Mail Server به کمک Postfix, Dovecot, MySQL
آموزش کانفیگ سرور ایمیل یا Mail Server :
پیش نیاز ها :
یک آدرس دامنه پارک شده روی سرور
نصب سرویس MySQL Server
دسترسی Root
استفاده از Hostname ولید و معتبر
نصب سرویس ها :
ابتدا باید آخرین نسخه های پایدار سرویس های Postfix و Dovecot و MySQL و آنتی اسپمر SpamAssasin را روی سرور لینوکس نصب کنیم :
کد PHP:
apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql
ساختن دیتابیس MySQL و Virtual Domain و ساخت User :
ابتدا یک دیتابیس MySQL میسازیم و ۳ جدول در آن ایجاد میکنیم . یکی برای یوزر ها ، یکی برای دامنه ها و دیگری برای alias ها :
کد PHP:
mysqladmin -p create servermail
mysql -u root -p
mysql >
mysql > GRANT SELECT ON servermail.* TO ‘usermail’@’127.0.0.1′ IDENTIFIED BY ‘mailpassword';
mysql > FLUSH PRIVILEGES;
mysql> USE servermail;
CREATE TABLE virtual_domains (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE virtual_users (
id INT NOT NULL AUTO_INCREMENT,
domain_id INT NOT NULL,
password VARCHAR(106) NOT NULL,
email VARCHAR(120) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY email (email),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE virtual_aliases (
id INT NOT NULL AUTO_INCREMENT,
domain_id INT NOT NULL,
source varchar(100) NOT NULL,
destination varchar(100) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ابتدا دامنه های مورد نظر خود را داخل جدول Virtual Domains مربوط به دیتابیس ساخته شده وارد میکنیم .
کد PHP:
INSERT INTO servermail.virtual_domains
(id ,name)
VALUES
(‘1′, ‘example.com’),
(‘2′, ‘hostname.example.com’);
کد PHP:
INSERT INTO servermail.virtual_users
(id, domain_id, password , email)
VALUES
(‘1′, ‘1’, ENCRYPT(‘firstpassword’, CONCAT(‘$6$’, SUBSTRING(SHA(RAND()), -16))), ‘email1@example.com’),
(‘2′, ‘1’, ENCRYPT(‘secondpassword’, CONCAT(‘$6$’, SUBSTRING(SHA(RAND()), -16))), ‘email2@example.com’);
کد PHP:
INSERT INTO servermail.virtual_aliases
(id, domain_id, source, destination)
VALUES
(‘1′, ‘1’, ‘alias@example.com’, ‘email1@example.com’);
کد PHP:
mysql > exit
کانفیگ Postfix :
در این مرحله با کانفیگ سرویس Postfix امکان هندل کردن کانکشن های SMTP و همچنین ارسال پیام و ایمیل برای تمامی یوزر های ساخته شده در دیتابیس Mail Server فراهم میگردد .
ابتدا مسیرفایل main.cf را تغییر داده و این فایل را ویرایش میکنیم :
کد PHP:
cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
vi /etc/postfix/main.cf
کد PHP:
# TLS parameters
#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_use_tls=yes
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_cert_file=/etc/ssl/certs/dovecot.pem
smtpd_tls_key_file=/etc/ssl/private/dovecot.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
#mydestination = example.com, hostname.example.com, localhost.example.com, localhost
mydestination = localhost
virtual_transport = lmtp:unix:private/dovecot-lmtp
کد PHP:
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
کد PHP:
vi /etc/postfix/mysql-virtual-mailbox-domains.cf
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_domains WHERE name=’%s’
کد PHP:
service postfix restart
کد PHP:
postmap -q example.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
کد PHP:
vi /etc/postfix/mysql-virtual-mailbox-maps.cf
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_users WHERE email=’%s’
کد PHP:
service postfix restart
کد PHP:
postmap -q email1@example.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
آخرین فایل مربوط به ایجاد کانکشن بین Postfix و MySQL است :
کد PHP:
vi /etc/postfix/mysql-virtual-alias-maps.cf
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT destination FROM virtual_aliases WHERE source=’%s’
کد PHP:
service postfix restart
کد PHP:
postmap -q alias@example.com mysql:/etc/postfix/mysql-virtual-alias-maps.cf
قبل از آغاز کانفیگ سرویس Dovecot در لینوکس و محیط ssh دستورات زیر را اجرا کنید :
کد PHP:
cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig
cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig
cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig
cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig
cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig
کد PHP:
vi /etc/dovecot/dovecot.conf
کد PHP:
!include conf.d/*.conf
کد PHP:
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap lmtp
کد PHP:
nano /etc/dovecot/conf.d/10-mail.conf
کد PHP:
mail_location = maildir:/var/mail/vhosts/%d/%n
کد PHP:
mail_privileged_group = mail
کانفیگ Postfix و Dovecot
بررسی دسترسی ها :
خروجی دستور زیر :
کد PHP:
ls -ld /var/mail
کد PHP:
drwxrwsr-x 3 root vmail 4096 Jan 24 21:23 /var/mail
کد PHP:
mkdir -p /var/mail/vhosts/example.com
کد PHP:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/mail
chown -R vmail:vmail /var/mail
کد PHP:
nano /etc/dovecot/conf.d/10-auth.conf
کد PHP:
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-system.conf.ext
!include auth-sql.conf.ext
کد PHP:
nano /etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}
کد PHP:
nano /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=servermail user=usermail password=mailpassword
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email=’%u';
کد PHP:
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
کد PHP:
nano /etc/dovecot/conf.d/10-master.conf
##Uncomment inet_listener_imap and modify to port 0
service imap-login {
inet_listener imap {
port = 0
}
#Create LMTP socket and this configurations
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
#inet_listener lmtp {
# Avoid making LMTP visible for the entire internet
#address =
#port =
#}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
#group =
}
#unix_listener /var/spool/postfix/private/auth {
# mode = 0666
#}
user = dovecot
}
service auth-worker {
# Auth worker process is run as root by default, so that it can access
# /etc/shadow. If this isn’t necessary, the user should be changed to
# $default_internal_user.
user = vmail
}
کد PHP:
service dovecot restart
نویسنده Babak Ajideh