|
@@ -199,6 +199,9 @@ MAX_PHP_MEMORY=32
|
199
|
199
|
# default MariaDB password
|
200
|
200
|
MARIADB_PASSWORD=
|
201
|
201
|
|
|
202
|
+# file containing a list of remote locations to backup to
|
|
203
|
+FRIENDS_SERVERS_LIST=/home/$MY_USERNAME/backup.list
|
|
204
|
+
|
202
|
205
|
#list of encryption protocols
|
203
|
206
|
SSL_PROTOCOLS="TLSv1 TLSv1.1 TLSv1.2"
|
204
|
207
|
|
|
@@ -1442,6 +1445,41 @@ function encrypt_incoming_email {
|
1442
|
1445
|
echo 'encrypt_incoming_email' >> $COMPLETION_FILE
|
1443
|
1446
|
}
|
1444
|
1447
|
|
|
1448
|
+function encrypt_outgoing_email {
|
|
1449
|
+ # encrypts outgoing mail using your GPG public key
|
|
1450
|
+ # so even if an attacker gains access to the data at rest they still need
|
|
1451
|
+ # to know your GPG key password to be able to read sent mail
|
|
1452
|
+ if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
|
|
1453
|
+ return
|
|
1454
|
+ fi
|
|
1455
|
+ if grep -Fxq "encrypt_outgoing_email" $COMPLETION_FILE; then
|
|
1456
|
+ return
|
|
1457
|
+ fi
|
|
1458
|
+ if [[ $GPG_ENCRYPT_STORED_EMAIL != "yes" ]]; then
|
|
1459
|
+ return
|
|
1460
|
+ fi
|
|
1461
|
+
|
|
1462
|
+ echo 'sent_items_router:' > /etc/exim4/conf.d/router/170_exim4-config_encryptsent
|
|
1463
|
+ echo ' driver = accept' >> /etc/exim4/conf.d/router/170_exim4-config_encryptsent
|
|
1464
|
+ echo ' transport = sent_items_transport' >> /etc/exim4/conf.d/router/170_exim4-config_encryptsent
|
|
1465
|
+ echo ' condition = ${if !eq{$authenticated_id}{}}' >> /etc/exim4/conf.d/router/170_exim4-config_encryptsent
|
|
1466
|
+ echo ' unseen' >> /etc/exim4/conf.d/router/170_exim4-config_encryptsent
|
|
1467
|
+ echo ' no_verify' >> /etc/exim4/conf.d/router/170_exim4-config_encryptsent
|
|
1468
|
+
|
|
1469
|
+ # TODO
|
|
1470
|
+ echo 'sent_items_transport:'
|
|
1471
|
+ echo ' driver = pipe'
|
|
1472
|
+ echo ' user = $authenticated_id'
|
|
1473
|
+ echo ' group = Debian-exim'
|
|
1474
|
+ echo ' temp_errors = *'
|
|
1475
|
+ echo ' transport_filter = /usr/bin/gpgit.pl $sender_address'
|
|
1476
|
+ echo ' command = /usr/bin/pipe2imap.pl --ssl --user master --authas $authenticated_id --passfile /etc/exim4/master_imap_password.txt --folder "Sent Items" --flags "\\seen"'
|
|
1477
|
+ echo ' log_defer_output = true'
|
|
1478
|
+
|
|
1479
|
+ service exim4 restart
|
|
1480
|
+
|
|
1481
|
+ echo 'encrypt_outgoing_email' >> $COMPLETION_FILE
|
|
1482
|
+}
|
1445
|
1483
|
|
1446
|
1484
|
function email_client {
|
1447
|
1485
|
if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
|
|
@@ -3576,6 +3614,49 @@ IPT_NAME
|
3576
|
3614
|
echo 'create_restore_script' >> $COMPLETION_FILE
|
3577
|
3615
|
}
|
3578
|
3616
|
|
|
3617
|
+function backup_to_friends_servers {
|
|
3618
|
+ if grep -Fxq "backup_to_friends_servers" $COMPLETION_FILE; then
|
|
3619
|
+ return
|
|
3620
|
+ fi
|
|
3621
|
+ if [ ! $FRIENDS_SERVERS_LIST ]; then
|
|
3622
|
+ return
|
|
3623
|
+ fi
|
|
3624
|
+
|
|
3625
|
+ apt-get -y --force-yes install duplicity
|
|
3626
|
+
|
|
3627
|
+ # script to do backups
|
|
3628
|
+ echo '#!/bin/bash' > /usr/bin/backup2friends
|
|
3629
|
+ echo 'GPG_KEY=$1' >> /usr/bin/backup2friends
|
|
3630
|
+ echo '' >> /usr/bin/backup2friends
|
|
3631
|
+ echo 'if [ ! $GPG_KEY ]; then' >> /usr/bin/backup2friends
|
|
3632
|
+ echo ' echo "No GPG key specified"' >> /usr/bin/backup2friends
|
|
3633
|
+ echo ' exit 1' >> /usr/bin/backup2friends
|
|
3634
|
+ echo 'fi' >> /usr/bin/backup2friends
|
|
3635
|
+ echo '' >> /usr/bin/backup2friends
|
|
3636
|
+ echo "if [ ! -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/backup2friends
|
|
3637
|
+ echo ' exit 2' >> /usr/bin/backup2friends
|
|
3638
|
+ echo 'fi' >> /usr/bin/backup2friends
|
|
3639
|
+ echo '' >> /usr/bin/backup2friends
|
|
3640
|
+ echo 'while read remote_server' >> /usr/bin/backup2friends
|
|
3641
|
+ echo 'do' >> /usr/bin/backup2friends
|
|
3642
|
+ echo ' SERVER="${* %%remote_server}"' >> /usr/bin/backup2friends
|
|
3643
|
+ echo ' FTP_PASSWORD="${remote_server%% *}"' >> /usr/bin/backup2friends
|
|
3644
|
+ echo " duplicity incr --ssh-askpass --encrypt-key $GPG_KEY --full-if-older-than 4W --exclude-other-filesystems /home/$MY_USERNAME $SERVER" >> /usr/bin/backup2friends
|
|
3645
|
+ echo ' duplicity --ssh-askpass --force cleanup $SERVER' >> /usr/bin/backup2friends
|
|
3646
|
+ echo ' duplicity --ssh-askpass --force remove-all-but-n-full 2 $SERVER' >> /usr/bin/backup2friends
|
|
3647
|
+ echo "done < $FRIENDS_SERVERS_LIST" >> /usr/bin/backup2friends
|
|
3648
|
+ echo 'exit 0' >> /usr/bin/backup2friends
|
|
3649
|
+ chmod +x /usr/bin/backup2friends
|
|
3650
|
+
|
|
3651
|
+ # update crontab
|
|
3652
|
+ echo '#!/bin/bash' > /etc/cron.daily/backuptofriends
|
|
3653
|
+ echo 'GPG_KEY=' >> /etc/cron.daily/backuptofriends
|
|
3654
|
+ echo '/usr/bin/backup2friends $GPG_KEY' >> /etc/cron.daily/backuptofriends
|
|
3655
|
+ chmod +x /etc/cron.daily/backuptofriends
|
|
3656
|
+
|
|
3657
|
+ echo 'backup_to_friends_servers' >> $COMPLETION_FILE
|
|
3658
|
+}
|
|
3659
|
+
|
3579
|
3660
|
function install_final {
|
3580
|
3661
|
if grep -Fxq "install_final" $COMPLETION_FILE; then
|
3581
|
3662
|
return
|
|
@@ -3622,6 +3703,7 @@ time_synchronisation
|
3622
|
3703
|
configure_internet_protocol
|
3623
|
3704
|
configure_ssh
|
3624
|
3705
|
check_hwrng
|
|
3706
|
+backup_to_friends_servers
|
3625
|
3707
|
search_for_attached_usb_drive
|
3626
|
3708
|
regenerate_ssh_keys
|
3627
|
3709
|
script_to_make_self_signed_certificates
|
|
@@ -3631,6 +3713,7 @@ create_procmail
|
3631
|
3713
|
configure_imap
|
3632
|
3714
|
configure_gpg
|
3633
|
3715
|
encrypt_incoming_email
|
|
3716
|
+#encrypt_outgoing_email
|
3634
|
3717
|
email_client
|
3635
|
3718
|
configure_firewall_for_email
|
3636
|
3719
|
folders_for_mailing_lists
|