|  | @@ -374,13 +374,155 @@ function configure_email {
 | 
	
		
			
			| 374 | 374 |    sed "s/START=no/START=yes/g" /etc/default/saslauthd > /tmp/saslauthd
 | 
	
		
			
			| 375 | 375 |    cp -f /tmp/saslauthd /etc/default/saslauthd
 | 
	
		
			
			| 376 | 376 |    /etc/init.d/saslauthd start
 | 
	
		
			
			|  | 377 | +
 | 
	
		
			
			|  | 378 | +  # make a tls certificate for email
 | 
	
		
			
			| 377 | 379 |    makecert exim
 | 
	
		
			
			| 378 | 380 |    mv /etc/ssl/private/exim.key /etc/exim4
 | 
	
		
			
			| 379 | 381 |    mv /etc/ssl/certs/exim.crt /etc/exim4
 | 
	
		
			
			| 380 | 382 |    mv /etc/ssl/certs/exim.dhparam /etc/exim4
 | 
	
		
			
			| 381 | 383 |    chown root:Debian-exim /etc/exim4/exim.key /etc/exim4/exim.crt /etc/exim4/exim.dhparam
 | 
	
		
			
			| 382 | 384 |    chmod 640 /etc/exim4/exim.key /etc/exim4/exim.crt /etc/exim4/exim.dhparam
 | 
	
		
			
			| 383 |  | -#editor /etc/exim4/exim4.conf.template
 | 
	
		
			
			|  | 385 | +
 | 
	
		
			
			|  | 386 | +  sed '/login_saslauthd_server/,/.endif/ s/# *//' /etc/exim4/exim4.conf.template > /tmp/exim4.conf.template
 | 
	
		
			
			|  | 387 | +  cp -f /tmp/exim4.conf.template /etc/exim4/exim4.conf.template
 | 
	
		
			
			|  | 388 | +
 | 
	
		
			
			|  | 389 | +  sed '/.ifdef MAIN_HARDCODE_PRIMARY_HOSTNAME/i\MAIN_HARDCODE_PRIMARY_HOSTNAME = $DOMAIN_NAME\nMAIN_TLS_ENABLE = true' /etc/exim4/exim4.conf.template > /tmp/exim4.conf.template
 | 
	
		
			
			|  | 390 | +  cp -f /tmp/exim4.conf.template /etc/exim4/exim4.conf.template
 | 
	
		
			
			|  | 391 | +
 | 
	
		
			
			|  | 392 | +  sed "s|SMTPLISTENEROPTIONS=''|SMTPLISTENEROPTIONS='-oX 465:25:587 -oP /var/run/exim4/exim.pid'|g" /etc/default/exim4 > /tmp/exim4
 | 
	
		
			
			|  | 393 | +  cp -f /tmp/exim4 /etc/default/exim4
 | 
	
		
			
			|  | 394 | +
 | 
	
		
			
			|  | 395 | +  sed '/03_exim4-config_tlsoptions/a\tls_on_connect_ports=465' /etc/exim4/exim4.conf.template > /tmp/exim4.conf.template
 | 
	
		
			
			|  | 396 | +  cp -f /tmp/exim4.conf.template /etc/exim4/exim4.conf.template
 | 
	
		
			
			|  | 397 | +
 | 
	
		
			
			|  | 398 | +  adduser $MY_USERNAME sasl
 | 
	
		
			
			|  | 399 | +  addgroup Debian-exim sasl
 | 
	
		
			
			|  | 400 | +  /etc/init.d/exim4 restart
 | 
	
		
			
			|  | 401 | +  mkdir -m 700 /etc/skel/Maildir
 | 
	
		
			
			|  | 402 | +  mkdir -m 700 /etc/skel/Maildir/Sent
 | 
	
		
			
			|  | 403 | +  mkdir -m 700 /etc/skel/Maildir/Sent/tmp
 | 
	
		
			
			|  | 404 | +  mkdir -m 700 /etc/skel/Maildir/Sent/cur
 | 
	
		
			
			|  | 405 | +  mkdir -m 700 /etc/skel/Maildir/Sent/new
 | 
	
		
			
			|  | 406 | +  mkdir -m 700 /etc/skel/Maildir/.learn-spam
 | 
	
		
			
			|  | 407 | +  mkdir -m 700 /etc/skel/Maildir/.learn-spam/cur
 | 
	
		
			
			|  | 408 | +  mkdir -m 700 /etc/skel/Maildir/.learn-spam/new
 | 
	
		
			
			|  | 409 | +  mkdir -m 700 /etc/skel/Maildir/.learn-spam/tmp
 | 
	
		
			
			|  | 410 | +  mkdir -m 700 /etc/skel/Maildir/.learn-ham
 | 
	
		
			
			|  | 411 | +  mkdir -m 700 /etc/skel/Maildir/.learn-ham/cur
 | 
	
		
			
			|  | 412 | +  mkdir -m 700 /etc/skel/Maildir/.learn-ham/new
 | 
	
		
			
			|  | 413 | +  mkdir -m 700 /etc/skel/Maildir/.learn-ham/tmp
 | 
	
		
			
			|  | 414 | +  ln -s /etc/skel/Maildir/.learn-spam /etc/skel/Maildir/spam
 | 
	
		
			
			|  | 415 | +  ln -s /etc/skel/Maildir/.learn-ham /etc/skel/Maildir/ham
 | 
	
		
			
			|  | 416 | +
 | 
	
		
			
			|  | 417 | +  if [ ! -d /home/$MY_USERNAME/Maildir ]; then
 | 
	
		
			
			|  | 418 | +    mkdir -m 700 /home/$MY_USERNAME/Maildir
 | 
	
		
			
			|  | 419 | +    mkdir -m 700 /home/$MY_USERNAME/Maildir/cur
 | 
	
		
			
			|  | 420 | +    mkdir -m 700 /home/$MY_USERNAME/Maildir/tmp
 | 
	
		
			
			|  | 421 | +    mkdir -m 700 /home/$MY_USERNAME/Maildir/new
 | 
	
		
			
			|  | 422 | +    mkdir -m 700 /home/$MY_USERNAME/Maildir/Sent
 | 
	
		
			
			|  | 423 | +    mkdir -m 700 /home/$MY_USERNAME/Maildir/Sent/cur
 | 
	
		
			
			|  | 424 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/Sent/tmp
 | 
	
		
			
			|  | 425 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/Sent/new
 | 
	
		
			
			|  | 426 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/.learn-spam
 | 
	
		
			
			|  | 427 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/.learn-spam/cur
 | 
	
		
			
			|  | 428 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/.learn-spam/new
 | 
	
		
			
			|  | 429 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/.learn-spam/tmp
 | 
	
		
			
			|  | 430 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/.learn-ham
 | 
	
		
			
			|  | 431 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/.learn-ham/cur
 | 
	
		
			
			|  | 432 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/.learn-ham/new
 | 
	
		
			
			|  | 433 | +	mkdir -m 700 /home/$MY_USERNAME/Maildir/.learn-ham/tmp
 | 
	
		
			
			|  | 434 | +	ln -s /home/$MY_USERNAME/Maildir/.learn-spam /home/$MY_USERNAME/Maildir/spam
 | 
	
		
			
			|  | 435 | +	ln -s /home/$MY_USERNAME/Maildir/.learn-ham /home/$MY_USERNAME/Maildir/ham
 | 
	
		
			
			|  | 436 | +	chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/Maildir
 | 
	
		
			
			|  | 437 | +  fi
 | 
	
		
			
			|  | 438 | +}
 | 
	
		
			
			|  | 439 | +
 | 
	
		
			
			|  | 440 | +function spam_filtering {
 | 
	
		
			
			|  | 441 | +  apt-get -y install spamassassin exim4-daemon-heavy
 | 
	
		
			
			|  | 442 | +  sed 's/ENABLED=0/ENABLED=1/g' /etc/default/spamassassin > /tmp/spamassassin
 | 
	
		
			
			|  | 443 | +  cp -f /tmp/spamassassin /etc/default/spamassassin
 | 
	
		
			
			|  | 444 | +  sed 's/# spamd_address = 127.0.0.1 783/spamd_address = 127.0.0.1 783/g' /etc/exim4/exim4.conf.template > /tmp/exim4.conf.template
 | 
	
		
			
			|  | 445 | +  cp -f /tmp/exim4.conf.template /etc/exim4/exim4.conf.template
 | 
	
		
			
			|  | 446 | +  # This configuration is based on https://wiki.debian.org/DebianSpamAssassin
 | 
	
		
			
			|  | 447 | +  sed 's/local_parts = postmaster/local_parts = postmaster:abuse/g' /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt > /tmp/30_exim4-config_check_rcpt
 | 
	
		
			
			|  | 448 | +  cp -f /tmp/30_exim4-config_check_rcpt /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt
 | 
	
		
			
			|  | 449 | +  sed '/domains = +local_domains : +relay_to_domains/a\    set acl_m0 = rfcnames' /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt > /tmp/30_exim4-config_check_rcpt
 | 
	
		
			
			|  | 450 | +  cp -f /tmp/30_exim4-config_check_rcpt /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt
 | 
	
		
			
			|  | 451 | +  sed 's/accept/accept condition = ${if eq{$acl_m0}{rfcnames} {1}{0}}/g' /etc/exim4/conf.d/acl/40_exim4-config_check_data > /tmp/40_exim4-config_check_data
 | 
	
		
			
			|  | 452 | +  cp -f /tmp/40_exim4-config_check_data /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 453 | +  echo "warn  message = X-Spam-Score: $spam_score ($spam_bar)" >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 454 | +  echo "      spam = nobody:true" >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 455 | +  echo "warn  message = X-Spam-Flag: YES" >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 456 | +  echo "      spam = nobody" >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 457 | +  echo "warn  message = X-Spam-Report: $spam_report" >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 458 | +  echo "      spam = nobody" >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 459 | +  echo "# reject spam at high scores (> 12)" >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 460 | +  echo "deny  message = This message scored $spam_score spam points." >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 461 | +  echo "      spam = nobody:true" >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 462 | +  echo "      condition = ${if >{$spam_score_int}{120}{1}{0}}" >> /etc/exim4/conf.d/acl/40_exim4-config_check_data
 | 
	
		
			
			|  | 463 | +  # procmail configuration
 | 
	
		
			
			|  | 464 | +  echo "MAILDIR=$HOME/Maildir" > /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 465 | +  echo "DEFAULT=$MAILDIR/" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 466 | +  echo "LOGFILE=$HOME/log/procmail.log" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 467 | +  echo "LOGABSTRACT=all" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 468 | +  echo "# get spamassassin to check emails" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 469 | +  echo ":0fw: .spamassassin.lock" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 470 | +  echo "  * < 256000" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 471 | +  echo "| spamc" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 472 | +  echo "# strong spam are discarded" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 473 | +  echo ":0" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 474 | +  echo "  * ^X-Spam-Level: \*\*\*\*\*\*" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 475 | +  echo "/dev/null" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 476 | +  echo "# weak spam are kept just in case - clear this out every now and then" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 477 | +  echo ":0" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 478 | +  echo "  * ^X-Spam-Level: \*\*\*\*\*" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 479 | +  echo ".0-spam/" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 480 | +  echo "# otherwise, marginal spam goes here for revision" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 481 | +  echo ":0" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 482 | +  echo "  * ^X-Spam-Level: \*\*" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 483 | +  echo ".spam/" >> /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 484 | +  chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.procmailrc
 | 
	
		
			
			|  | 485 | +  # filtering scripts
 | 
	
		
			
			|  | 486 | +  echo "#!/bin/bash" > /usr/bin/filterspam
 | 
	
		
			
			|  | 487 | +  echo "USERNAME=$1" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 488 | +  echo "MAILDIR=/home/$USERNAME/Maildir/.learn-spam" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 489 | +  echo "if [ ! -d \"$MAILDIR\" ]; then" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 490 | +  echo "    exit" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 491 | +  echo "fi" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 492 | +  echo "for f in `ls $MAILDIR/cur`" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 493 | +  echo "do" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 494 | +  echo "    spamc -L spam < \"$MAILDIR/cur/$f\" > /dev/null" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 495 | +  echo "    rm \"$MAILDIR/cur/$f\"" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 496 | +  echo "done" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 497 | +  echo "for f in `ls $MAILDIR/new`" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 498 | +  echo "do" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 499 | +  echo "    spamc -L spam < \"$MAILDIR/new/$f\" > /dev/null" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 500 | +  echo "    rm \"$MAILDIR/new/$f\"" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 501 | +  echo "done" >> /usr/bin/filterspam
 | 
	
		
			
			|  | 502 | +
 | 
	
		
			
			|  | 503 | +  echo "#!/bin/bash" > /usr/bin/filterham
 | 
	
		
			
			|  | 504 | +  echo "USERNAME=$1" >> /usr/bin/filterham
 | 
	
		
			
			|  | 505 | +  echo "MAILDIR=/home/$USERNAME/Maildir/.learn-ham" >> /usr/bin/filterham
 | 
	
		
			
			|  | 506 | +  echo "if [ ! -d \"$MAILDIR\" ]; then" >> /usr/bin/filterham
 | 
	
		
			
			|  | 507 | +  echo "    exit" >> /usr/bin/filterham
 | 
	
		
			
			|  | 508 | +  echo "fi" >> /usr/bin/filterham
 | 
	
		
			
			|  | 509 | +  echo "for f in `ls $MAILDIR/cur`" >> /usr/bin/filterham
 | 
	
		
			
			|  | 510 | +  echo "do" >> /usr/bin/filterham
 | 
	
		
			
			|  | 511 | +  echo "    spamc -L ham < \"$MAILDIR/cur/$f\" > /dev/null" >> /usr/bin/filterham
 | 
	
		
			
			|  | 512 | +  echo "    rm \"$MAILDIR/cur/$f\"" >> /usr/bin/filterham
 | 
	
		
			
			|  | 513 | +  echo "done" >> /usr/bin/filterham
 | 
	
		
			
			|  | 514 | +  echo "for f in `ls $MAILDIR/new`" >> /usr/bin/filterham
 | 
	
		
			
			|  | 515 | +  echo "do" >> /usr/bin/filterham
 | 
	
		
			
			|  | 516 | +  echo "    spamc -L ham < \"$MAILDIR/new/$f\" > /dev/null" >> /usr/bin/filterham
 | 
	
		
			
			|  | 517 | +  echo "    rm \"$MAILDIR/new/$f\"" >> /usr/bin/filterham
 | 
	
		
			
			|  | 518 | +  echo "done" >> /usr/bin/filterham
 | 
	
		
			
			|  | 519 | +
 | 
	
		
			
			|  | 520 | +  echo "*/3 * * * * root /usr/bin/timeout 120 /usr/bin/filterspam $MY_USERNAME" >> /etc/crontab
 | 
	
		
			
			|  | 521 | +  echo "*/3 * * * * root /usr/bin/timeout 120 /usr/bin/filterham $MY_USERNAME" >> /etc/crontab
 | 
	
		
			
			|  | 522 | +  chmod 655 /usr/bin/filterspam /usr/bin/filterham
 | 
	
		
			
			|  | 523 | +  service spamassassin restart
 | 
	
		
			
			|  | 524 | +  service exim4 restart
 | 
	
		
			
			|  | 525 | +  service cron restart
 | 
	
		
			
			| 384 | 526 |  }
 | 
	
		
			
			| 385 | 527 |  
 | 
	
		
			
			| 386 | 528 |  initial_setup
 | 
	
	
		
			
			|  | @@ -401,3 +543,4 @@ save_firewall_settings
 | 
	
		
			
			| 401 | 543 |  configure_internet_protocol
 | 
	
		
			
			| 402 | 544 |  script_to_make_self_signed_certificates
 | 
	
		
			
			| 403 | 545 |  configure_email
 | 
	
		
			
			|  | 546 | +spam_filtering
 |