| Line 100: |
Line 100: |
| | /etc/apache2/sites-available/webmail.conf | | /etc/apache2/sites-available/webmail.conf |
| | <nowiki><VirtualHost *:80> | | <nowiki><VirtualHost *:80> |
| − | ServerAdmin rafael@herrerosolis.com
| + | ServerAdmin rafael@herrerosolis.com |
| − | Redirect permanent / https://webmail.herrerosolis.com/
| + | Redirect permanent / https://webmail.herrerosolis.com/ |
| − | # DocumentRoot /var/www/rafael
| + | # DocumentRoot /var/www/rafael |
| − | ServerName webmail.herrerosolis.com
| + | ServerName webmail.herrerosolis.com |
| − | ServerAlias webmail.herrerosolis.com
| + | ServerAlias webmail.herrerosolis.com |
| − | ErrorLog /var/log/apache2/webmail/error.log
| + | ErrorLog /var/log/apache2/webmail/error.log |
| − |
| + | |
| − | # Posible values include: debug, info, notice, warn, error, crit.
| + | # Posible values include: debug, info, notice, warn, error, crit. |
| − | # alert, emerg.
| + | # alert, emerg. |
| − |
| + | |
| − | CustomLog /var/log/apache2/webmail/access.log combined
| + | CustomLog /var/log/apache2/webmail/access.log combined |
| − | </virtualHost>
| + | </virtualHost> |
| − |
| + | |
| − | <VirtualHost *:443>
| + | <VirtualHost *:443> |
| − | ServerAdmin rafael@herrerosolis.com
| + | ServerAdmin rafael@herrerosolis.com |
| − | DocumentRoot /var/lib/roundcube
| + | DocumentRoot /var/lib/roundcube |
| − | ServerName webmail.herrerosolis.com
| + | ServerName webmail.herrerosolis.com |
| − | ServerAlias webmail.herrerosolis.com
| + | ServerAlias webmail.herrerosolis.com |
| − |
| + | |
| − | ErrorLog /var/log/apache2/webmail/error.log
| + | ErrorLog /var/log/apache2/webmail/error.log |
| − |
| + | |
| − | # Posible values include: debug, info, notice, warn, error, crit.
| + | # Posible values include: debug, info, notice, warn, error, crit. |
| − | # alert, emerg.
| + | # alert, emerg. |
| − | CustomLog /var/log/apache2/webmail/access.log combined
| + | CustomLog /var/log/apache2/webmail/access.log combined |
| − | SSLEngine on
| + | SSLEngine on |
| − | SSLCertificateFile /etc/ssl/certs/herrerosolis.crt
| + | SSLCertificateFile /etc/ssl/certs/herrerosolis.crt |
| − | SSLCertificateKeyFile /etc/ssl/private/herrerosolis.key
| + | SSLCertificateKeyFile /etc/ssl/private/herrerosolis.key |
| − | </virtualHost>
| + | </virtualHost> |
| − | </nowiki>
| + | </nowiki> |
| | | | |
| | ===OPTIONAL: Remove TinyMCE=== | | ===OPTIONAL: Remove TinyMCE=== |
| Line 136: |
Line 136: |
| | | | |
| | <nowiki>Comment out these lines: | | <nowiki>Comment out these lines: |
| − | #<Directory "/usr/share/tinymce/www/">
| + | #<Directory "/usr/share/tinymce/www/"> |
| − | # Options Indexes MultiViews FollowSymLinks
| + | # Options Indexes MultiViews FollowSymLinks |
| − | # AllowOverride None
| + | # AllowOverride None |
| − | # Order allow,deny
| + | # Order allow,deny |
| − | # allow from all
| + | # allow from all |
| − | #</Directory>
| + | #</Directory> |
| − | </nowiki>
| + | </nowiki> |
| | | | |
| | ===Create Databases=== | | ===Create Databases=== |
| Line 152: |
Line 152: |
| | | | |
| | <nowiki>CREATE TABLE mailboxes ( | | <nowiki>CREATE TABLE mailboxes ( |
| − | id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
| + | id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, |
| − | domain_id INT(10) NOT NULL,
| + | domain_id INT(10) NOT NULL, |
| − | local_part VARCHAR(250) NOT NULL,
| + | local_part VARCHAR(250) NOT NULL, |
| − | password VARCHAR(100) NULL,
| + | password VARCHAR(100) NULL, |
| − | description VARCHAR(250) NULL,
| + | description VARCHAR(250) NULL, |
| − | active TINYINT(1) NOT NULL DEFAULT 0,
| + | active TINYINT(1) NOT NULL DEFAULT 0, |
| − | created TIMESTAMP NOT NULL DEFAULT NOW(),
| + | created TIMESTAMP NOT NULL DEFAULT NOW(), |
| − | modified TIMESTAMP NULL
| + | modified TIMESTAMP NULL |
| − | );
| + | ); |
| − | CREATE TABLE aliases (
| + | CREATE TABLE aliases ( |
| − | id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
| + | id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, |
| − | domain_id INT(10) NOT NULL,
| + | domain_id INT(10) NOT NULL, |
| − | local_part VARCHAR(250) NOT NULL,
| + | local_part VARCHAR(250) NOT NULL, |
| − | goto VARCHAR(250) NOT NULL,
| + | goto VARCHAR(250) NOT NULL, |
| − | description VARCHAR(250) NULL,
| + | description VARCHAR(250) NULL, |
| − | active TINYINT(1) NOT NULL DEFAULT 0,
| + | active TINYINT(1) NOT NULL DEFAULT 0, |
| − | created TIMESTAMP NOT NULL DEFAULT NOW(),
| + | created TIMESTAMP NOT NULL DEFAULT NOW(), |
| − | modified TIMESTAMP NULL
| + | modified TIMESTAMP NULL |
| − | );
| + | ); |
| − | CREATE TABLE vacations (
| + | CREATE TABLE vacations ( |
| − | id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
| + | id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, |
| − | mailbox_id INT(10) NOT NULL,
| + | mailbox_id INT(10) NOT NULL, |
| − | subject VARCHAR(250) NOT NULL,
| + | subject VARCHAR(250) NOT NULL, |
| − | body TEXT NOT NULL,
| + | body TEXT NOT NULL, |
| − | description VARCHAR(250) NULL,
| + | description VARCHAR(250) NULL, |
| − | active TINYINT(1) NOT NULL DEFAULT 0,
| + | active TINYINT(1) NOT NULL DEFAULT 0, |
| − | created TIMESTAMP NOT NULL DEFAULT NOW(),
| + | created TIMESTAMP NOT NULL DEFAULT NOW(), |
| − | modified TIMESTAMP NULL
| + | modified TIMESTAMP NULL |
| − | );
| + | ); |
| − |
| + | |
| − | CREATE TABLE domains (
| + | CREATE TABLE domains ( |
| − | id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
| + | id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, |
| − | fqdn VARCHAR(250) NOT NULL,
| + | fqdn VARCHAR(250) NOT NULL, |
| − | type ENUM('local','relay') NOT NULL DEFAULT 'local',
| + | type ENUM('local','relay') NOT NULL DEFAULT 'local', |
| − | description VARCHAR(250) NULL,
| + | description VARCHAR(250) NULL, |
| − | active TINYINT(1) NOT NULL DEFAULT 0,
| + | active TINYINT(1) NOT NULL DEFAULT 0, |
| − | created TIMESTAMP NOT NULL DEFAULT NOW(),
| + | created TIMESTAMP NOT NULL DEFAULT NOW(), |
| − | modified TIMESTAMP NULL
| + | modified TIMESTAMP NULL |
| − | );
| + | ); |
| − | </nowiki>
| + | </nowiki> |
| | | | |
| | ===Create your first email account and domain=== | | ===Create your first email account and domain=== |
| Line 205: |
Line 205: |
| | ===Create a database-account to access the database=== | | ===Create a database-account to access the database=== |
| | <nowiki>grant ALL on email_accounts.* to 'email'@'localhost' identified by 'password'; | | <nowiki>grant ALL on email_accounts.* to 'email'@'localhost' identified by 'password'; |
| − | flush privileges;
| + | flush privileges; |
| − | </nowiki>
| + | </nowiki> |
| | http://bradthemad.org/tech/notes/exim_cheatsheet.php | | http://bradthemad.org/tech/notes/exim_cheatsheet.php |
| | | | |
| Line 469: |
Line 469: |
| | Add to /etc/roundcube/config.inc.php | | Add to /etc/roundcube/config.inc.php |
| | <nowiki>$config['imap_conn_options'] = array( | | <nowiki>$config['imap_conn_options'] = array( |
| − | 'ssl' => array(
| + | 'ssl' => array( |
| − | 'verify_peer' => false,
| + | 'verify_peer' => false, |
| − | 'verify_peer_name' => false,
| + | 'verify_peer_name' => false, |
| − | 'allow_self_signed' => true,
| + | 'allow_self_signed' => true, |
| − | ),
| + | ), |
| − | );
| + | ); |
| − | </nowiki>
| + | </nowiki> |
| | | | |
| | ====Enable Password Plugin==== | | ====Enable Password Plugin==== |
| Line 505: |
Line 505: |
| | Then edit your local composer.json file and add the "vendor/plugin" names to the "require" section of the JSON structure. Don't forget to specify the version constraint: | | Then edit your local composer.json file and add the "vendor/plugin" names to the "require" section of the JSON structure. Don't forget to specify the version constraint: |
| | <nowiki>"require" : { | | <nowiki>"require" : { |
| − | ...,
| + | ..., |
| − | "roundcube/rcsample": ">=0.2.0"
| + | "roundcube/rcsample": ">=0.2.0" |
| − | }</nowiki>
| + | }</nowiki> |
| | | | |
| | After every change to composer.json run | | After every change to composer.json run |
| Line 591: |
Line 591: |
| | #Add the new domain to to MySQL email_accounts.domains | | #Add the new domain to to MySQL email_accounts.domains |
| | #Start creating accounts with the new domain id | | #Start creating accounts with the new domain id |
| | + | |
| | + | = Auxiliary Scripts = |
| | + | |
| | + | === Create email account === |
| | + | <syntaxhighlight lang="bash"> |
| | + | #!/bin/bash |
| | + | PASSWORD1="hola" |
| | + | PASSWORD2="mundo" |
| | + | DOMAIN="herrerosolis.com" |
| | + | echo "******************************* MAIL ACCOUNT INFORMATION *****************************************" |
| | + | |
| | + | read -p "Username (without@redactate.com): " USERNAME |
| | + | |
| | + | while [[ "$PASSWORD1" != "$PASSWORD2" ]]; do |
| | + | read -s -p "Password: " PASSWORD1 |
| | + | echo |
| | + | read -s -p "Confirm password: " PASSWORD2 |
| | + | if [ "$PASSWORD1" != "$PASSWORD2" ]; then |
| | + | echo "Passwords dont match, try again..." |
| | + | fi |
| | + | done |
| | + | echo |
| | + | echo |
| | + | echo "Input MySQL database password for user mail" |
| | + | |
| | + | mysql -h 127.0.0.1 -u cartero -p -D email_accounts -e "INSERT INTO mailboxes VALUES(NULL,1,'$USERNAME',MD5('$PASSWORD1'),'Mail account for $USERNAME@${DOMAIN}',1,NOW(),NOW());" |
| | + | </syntaxhighlight> |
| | + | |
| | + | === Create email alias === |
| | + | <syntaxhighlight lang="bash"> |
| | + | #!/bin/bash |
| | + | |
| | + | echo "******************************* MAIL ACCOUNT INFORMATION *****************************************" |
| | + | |
| | + | read -p "Alias name (without _@redactate.com): " ALIAS |
| | + | |
| | + | read -p "Destiny account (full email address): " GOTO |
| | + | |
| | + | echo |
| | + | echo |
| | + | echo "Input MySQL database password for user mail" |
| | + | |
| | + | mysql -h 127.0.0.1 -u cartero -p -D email_accounts -e "INSERT INTO aliases VALUES (null, 2, '$ALIAS', '$GOTO', 'Redirecting $ALIAS@ to $GOTO', 1, NOW(),NOW());" |
| | + | |
| | + | </syntaxhighlight> |