Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- domain=$(whiptail --inputbox "Введите имя домена" 8 78 --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
- mysql_root=$(whiptail --inputbox "Введите пароль администратора MySQL" 8 78 --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
- user=$(whiptail --inputbox "Введите имя пользователя MySQL для почтового сервера" 8 78 --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
- password=$(whiptail --inputbox "Введите пароль пользователя почтового сервера MySQL" 8 78 --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
- dbname=$(whiptail --inputbox "Введите название базы данных MySQL" 8 78 --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
- hosts=$(whiptail --inputbox "Введите IP-адрес или имя хоста с базой данных" 8 78 "127.0.0.1" --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
- apt-get install -y mysql-common mysql-server mysql-client dovecot-core dovecot-mysql dovecot-imapd postfix postfix-mysql
- echo "Create Database"
- sql="DROP DATABASE IF EXISTS mail;
- CREATE DATABASE mail;
- GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO '$user'@'localhost' IDENTIFIED BY "$password";
- GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO '$user'@'localhost.localdomain' IDENTIFIED BY "$password";
- FLUSH PRIVILEGES;
- USE mail;
- CREATE TABLE domains ( domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
- CREATE TABLE forwardings ( source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
- CREATE TABLE users ( user varchar(80) NOT NULL, email varchar(80) NOT NULL, password varchar(40) NOT NULL, PRIMARY KEY (email) );
- CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) );
- INSERT INTO domains (domain) VALUES ("$domain");
- INSERT INTO users (user, email, password) VALUES ('info',"info@$domain", MD5('password'));
- INSERT INTO users (user, email, password) VALUES ('postmaster','postmaster@$domain', MD5('password'));
- INSERT INTO forwardings (source, destination) VALUES ('root@localhost', 'postmaster@$domain');
- quit"
- mysql -uroot -p$mysq_root <<EOF
- $sql;
- EOF
- domains="SELECT domain AS virtual FROM domains WHERE domain = '%s'"
- forwardings="SELECT destination FROM forwardings WHERE source = '%s'"
- mailboxes="SELECT CONCAT( SUBSTRING_INDEX(email, '@', -1), '/' , SUBSTRING_INDEX(email, '@', 1), '/' ) FROM users WHERE email = '%s'"
- email2email="SELECT email FROM users WHERE email = '%s'"
- echo -e "user = $user\npassword = $password\ndbname = $dbname\nhosts = $hosts" > /etc/postfix/mysql-virtual_domains.cf
- echo -e "query = $domains" >> /etc/postfix/mysql-virtual_domains.cf
- echo -e "user = $user\npassword = $password\ndbname = $dbname\nhosts = $hosts" > /etc/postfix/mysql-virtual_forwardings.cf
- echo -e "query = $forwardings" >> /etc/postfix/mysql-virtual_forwardings.cf
- echo -e "user = $user\npassword = $password\ndbname = $dbname\nhosts = $hosts" > /etc/postfix/mysql-virtual_mailboxes.cf
- echo -e "query = $mailboxes" >> /etc/postfix/mysql-virtual_mailboxes.cf
- echo -e "user = $user\npassword = $password\ndbname = $dbname\nhosts = $hosts" > /etc/postfix/mysql-virtual_email2email.cf
- echo -e "query = $email2email" >> /etc/postfix/mysql-virtual_email2email.cf
- chmod o= /etc/postfix/mysql-virtual_*.cf
- chgrp postfix /etc/postfix/mysql-virtual_*.cf
- groupadd -g 5000 vmail
- useradd -g vmail -u 5000 vmail -d /home/vmail -m
- postconf -e inet_protocols=ipv4
- postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual_domains.cf
- postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual_mailboxes.cf
- postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual_forwardings.cf,mysql:/etc/postfix/mysql-virtual_email2email.cf
- postconf -e virtual_uid_maps=static:5000
- postconf -e virtual_gid_maps=static:5000
- postconf -e virtual_transport=dovecot
- postconf -e dovecot_destination_recipient_limit=1
- postconf -e virtual_mailbox_base=/home/vmail
- postconf -e virtual_uid_maps=static:5000
- postconf -e virtual_gid_maps=static:5000
- echo 'dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}' >> /etc/postfix/master.cf
- echo -e "protocols = imap\nlisten = *\nbase_dir = /var/run/dovecot/\ninstance_name = dovecot\nlogin_greeting = Dovecot ready.\nshutdown_clients = yes\ndoveadm_socket_path = doveadm-server\n" > /etc/dovecot/local.conf
- echo -e "driver = mysql\nconnect = host=127.0.0.1 dbname=$dbname user=$user password=$password\ndefault_pass_scheme = MD5\nuser_query = SELECT concat('/home/vmail/', user) AS home, 5000 AS uid, 5000 AS gid from users WHERE email = '%u';\npassword_query = SELECT email AS user, password FROM users WHERE email = '%u';\n" >> /etc/dovecot/dovecot-sql.conf.ext
- echo -e "disable_plaintext_auth = no\nauth_mechanisms = plain login\n" >> /etc/dovecot/conf.d/10-auth.conf
- echo -e "mail_location = maildir:/home/vmail/%d/%n/Maildir" >> /etc/dovecot/conf.d/10-mail.conf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement