Advertisement
Guest User

Untitled

a guest
Aug 28th, 2013
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.19 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3.  
  4. domain=$(whiptail --inputbox "Введите имя домена" 8 78  --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
  5. mysql_root=$(whiptail --inputbox "Введите пароль администратора MySQL" 8 78  --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
  6. user=$(whiptail --inputbox "Введите имя пользователя MySQL для почтового сервера" 8 78  --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
  7. password=$(whiptail --inputbox "Введите пароль пользователя почтового сервера  MySQL" 8 78  --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
  8. dbname=$(whiptail --inputbox "Введите название базы данных MySQL" 8 78  --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
  9. hosts=$(whiptail --inputbox "Введите IP-адрес или имя хоста с базой данных" 8 78 "127.0.0.1"  --title "Настройка почтового сервера" 3>&1 1>&2 2>&3)
  10.  
  11.  
  12. apt-get install -y mysql-common mysql-server mysql-client dovecot-core dovecot-mysql dovecot-imapd postfix postfix-mysql
  13.  
  14. echo "Create Database"
  15.  
  16. sql="DROP DATABASE IF EXISTS mail;
  17. CREATE DATABASE mail;
  18. GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO '$user'@'localhost' IDENTIFIED BY "$password";
  19. GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO '$user'@'localhost.localdomain' IDENTIFIED BY "$password";
  20. FLUSH PRIVILEGES;
  21. USE mail;
  22. CREATE TABLE domains ( domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
  23. CREATE TABLE forwardings ( source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
  24. CREATE TABLE users ( user varchar(80) NOT NULL, email varchar(80) NOT NULL, password varchar(40) NOT NULL, PRIMARY KEY (email) );
  25. CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) );
  26. INSERT INTO domains (domain) VALUES ("$domain");
  27. INSERT INTO users (user, email, password) VALUES ('info',"info@$domain", MD5('password'));
  28. INSERT INTO users (user, email, password) VALUES ('postmaster','postmaster@$domain', MD5('password'));
  29. INSERT INTO forwardings (source, destination) VALUES ('root@localhost', 'postmaster@$domain');
  30. quit"
  31.  
  32. mysql -uroot -p$mysq_root <<EOF
  33. $sql;
  34. EOF
  35.  
  36.  
  37.  
  38. domains="SELECT domain AS virtual FROM domains WHERE domain = '%s'"
  39. forwardings="SELECT destination FROM forwardings WHERE source = '%s'"
  40. mailboxes="SELECT CONCAT( SUBSTRING_INDEX(email, '@', -1), '/' , SUBSTRING_INDEX(email, '@', 1), '/' ) FROM users WHERE email = '%s'"
  41. email2email="SELECT email FROM users WHERE email = '%s'"
  42.  
  43.  
  44. echo -e "user = $user\npassword = $password\ndbname = $dbname\nhosts = $hosts" > /etc/postfix/mysql-virtual_domains.cf
  45. echo -e "query = $domains" >> /etc/postfix/mysql-virtual_domains.cf
  46. echo -e "user = $user\npassword = $password\ndbname = $dbname\nhosts = $hosts" > /etc/postfix/mysql-virtual_forwardings.cf
  47. echo -e "query = $forwardings" >> /etc/postfix/mysql-virtual_forwardings.cf
  48. echo -e "user = $user\npassword = $password\ndbname = $dbname\nhosts = $hosts" > /etc/postfix/mysql-virtual_mailboxes.cf
  49. echo -e "query = $mailboxes" >>  /etc/postfix/mysql-virtual_mailboxes.cf
  50. echo -e "user = $user\npassword = $password\ndbname = $dbname\nhosts = $hosts" > /etc/postfix/mysql-virtual_email2email.cf
  51. echo -e "query = $email2email" >> /etc/postfix/mysql-virtual_email2email.cf
  52. chmod o= /etc/postfix/mysql-virtual_*.cf
  53. chgrp postfix /etc/postfix/mysql-virtual_*.cf
  54. groupadd -g 5000 vmail
  55. useradd -g vmail -u 5000 vmail -d /home/vmail -m
  56. postconf -e inet_protocols=ipv4
  57. postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual_domains.cf
  58. postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual_mailboxes.cf
  59. postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual_forwardings.cf,mysql:/etc/postfix/mysql-virtual_email2email.cf
  60. postconf -e virtual_uid_maps=static:5000
  61. postconf -e virtual_gid_maps=static:5000
  62. postconf -e virtual_transport=dovecot
  63. postconf -e dovecot_destination_recipient_limit=1
  64. postconf -e virtual_mailbox_base=/home/vmail
  65. postconf -e virtual_uid_maps=static:5000
  66. postconf -e virtual_gid_maps=static:5000
  67. echo 'dovecot unix  - n n -  -  pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}' >> /etc/postfix/master.cf
  68. 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
  69. 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
  70. echo -e "disable_plaintext_auth = no\nauth_mechanisms = plain login\n" >> /etc/dovecot/conf.d/10-auth.conf
  71. 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