Mailing lists

Mail lists

Warning: Your messages may be widely distributed

Take care with what you write and how you say things as messages will be sent to all of the mailing list's subscribers, potentially thousands of people.

 

The Sympa mailing list service is open to members of the University of Oxford who wish to use mailing lists relating to the academic, cultural and social life of the University.

Transmission of unsolicited commercial or advertising material is not permitted and you must abide by the University IT regulations and JANET acceptable use policy.

Expand All

The following list commands can be performed by sending mail using the stated email address format, replacing listname with the name of the list.

 

Email all list subscribers listname@maillist.ox.ac.uk
Email the list manager listname-owner@maillist.ox.ac.uk
Subscribe to a list listname-subscribe@maillist.ox.ac.uk
Unsubscribe from a list listname-unsubscribe@maillist.ox.ac.uk
Get information about a list listname-info@maillist.ox.ac.uk
Get mailing list help listname-help@maillist.ox.ac.uk

 

You can also manage your lists and subscriptions through the mailing list manager.

To manage your mailing list subscriptions:

  1. Access the Sympa mailing list manager
  2. On the Home tab, your subscriptions are displayed on the left hand side
  3. Selecting a list will display a number of options:

     

    Subscriber Options Set how you receive messages from the list
    Unsubscribe Unsubscribe from the list
    Info General information, such as the list name
    Admin Functions available to the list owners
    Moderate Functions available to the list moderators
    Archive View previous list messages
    Post Send a message to list
    Review Members View the list's subscribers

To suspend messages or unsubscribe from a mailing list:

  1. Access the Sympa mailing list manager
  2. On the Home tab, select Manage Your Subscriptions on the left hand side
  3. Tick the mailing lists you wish to update
  4. Select the option to either suspend the subscriptions or unsubscribe completely

If the list is set to prevent these actions you will need to contact the list owners, displayed when you select the Home tab, then select the list on the left hand side.

    To request a new mailing list:

    1. Access the Sympa mailing list manager
    2. Select the Create List tab
    3. Provide the following details:
       
      Name
      Used as the email prefix for the mail list
      Configuration A predefined list type, this can be updated after the list is created
      Subject A brief description of the list
      Category Clubs and Societies, Colleges, or Departments
      Description A description of the list

    Requirements:

    • A list must have at least one privileged owner of the following type:
    • Undergraduates may be a list owner if another owner meets the criteria above.
    • The list's subject matter must relate to the academic, administrative, social or cultural life of the University.
    • The majority of members and list traffic should be internal to the University.  The list must not be a general world wide mail list service.

     

    If your list does not meet the requirements, several sites such as JiscMail and Google Groups also offer mailing lists.

    The privileged owners of a mailing list may request its name is updated through the Self Service catalogue.  The list's email address will also be updated.

     

    The owners of a mailing list can update the list's subscribers in the following way:

    1. Access the Sympa mailing list manager
    2. On the Home tab, select the mailing list on the left hand side
    3. Select Admin > Manage Subscribers tab

    Note:

    • Subscription notifications will be sent to the subscriber unless quiet is selected
    • Owners can check why addresses were added or removed at AdminLogs
    • Privileged owners can update subscription options at AdminList Config tab > Privileges

    The privileged owners of a mailing list can update the list's owners and moderators in the following way:

    1. Access the Sympa mailing list manager
    2. On the Home tab, select the mailing list on the left hand side
    3. Select Admin > List Config tab > List definition

    Note:

    • You can also only add one new owner at a time
    • At least one owner must be present, you cannot delete the last one
    • To remove an entry, delete the details then select Update at the bottom of the screen
    • If changing your own status from privileged, make sure to apply all other changes before you update your status

    The privileged owners of a mailing list can update who can post to it in the following way:

    1. Access the Sympa mailing list manager
    2. On the Home tab, select the mailing list on the left hand side
    3. Select Admin > List Config tab > Sending/receiving setup
    4. The Who can send messages dropdown's most common options are:
       
      Public Anyone may post
      Restricted to subscribers Only subscribers may post
      Moderated Messages must be approved (a moderator must also be set)
      Self moderation To protect against forged messages the sender must confirm an email
      Whitelist Allowed senders must be specified at Admin Whitelist
    Note:
    • Addresses specified at Admin Blacklist are prevented from posting messages

    The privileged owners of a mailing list can update the list's message templates, such as its welcome message:

    1. Access the Sympa mailing list manager
    2. On the Home tab, select the mailing list on the left hand side
    3. Select Admin > Customising tab

    Note:

    • Do not edit the variable place holders enclosed in [%   %] as this will stop the templates from working properly

    A list's privileged owner may request its deletion through the Self Service catalogue.  A mailing list without an eligible privileged owner will also be deleted automatically if a replacement cannot be found.

    To recover a deleted mailing list please contact the service desk.

    Each mailing list can have members with the following roles:

     

    Subscriber

    Receive messages sent to the mailing list and can update their subscription

    Moderator

    Approve or reject a moderated list's messages or subscriptions

    Owner

    Update subscribers and some list settings

    Privileged owner

    Update subscribers and list settings

    Privileged owners can add another mailing list as a subscriber, allowing mail sent to the list to also be sent to subscribers of the other list.

    When using nested lists:

    1. Access the Sympa mailing list manager
    2. On the Home tab, select the mailing list on the left hand side
    3. Select Admin > List Config tab > Sending / receiving setup
    4. Ensure Require the list address to appear in the To or CC fields is set to off.

    Note:

    • The posting restrictions of the list will still apply, so the parent list may need to be authorised or require moderation.

    Sometimes a message sent to a mailing list will generate a failure message.  Bounce messages contain the reason for the bounce, but can look complicated, some example reasons being:

    • Only whitelisted addresses can post and the sender's address is not in the whitelist
    • Only subscribers can post and the sender's address is not subscribed
    • A moderator rejects the message
    • The message exceeds the maximum message size, often due to an attachment
    • The message has an attachment of a type not allowed
    • The list address is in the BCC field
    • The message is sent to the wrong address

    Owners may also receive notification that the subscriber bounce rate is too high. This is usually because many subscriber addresses have either expired or contain formatting issues such as leading or trailing spaces.

    The Admin > Bounces tab can display and reset the bouncing addresses.

    College mailing lists

    If you need to email Heads of House or other College Officers, please contact Tabitha Schenk (tabitha.schenk@admin.ox.ac.uk) in the Conference of Colleges Secretariat, with your name, job title, email address and the group you wish to post to.

     

    Department mailing lists

    Designated individuals within UAS can post to lists for the following groups:

    • Departmental Administrators
    • Departmental Administrators and Personnel Managers
    • Divisional and Faculty Boards
    • Heads of Department, Division and Pro-Vice-Chancellors
    • Combined departmental list

    Your local administrators can advise of who in your department can send to these lists.  If your role requires you to become a designated user, please email internalcommunications@admin.ox.ac.uk with your name, job title, department, and authorisation from your Head of Department.

    For changes in Heads of Department, Faculty Board Chairs, Departmental Administrators and Personnel Administrators, please send the completed 'Request to update mailing lists’ form to hrisdata@admin.ox.ac.uk.

    A list without a privileged owner is considered inactive and will be removed if a new privileged owner can not be found.  Mail lists that are expected to be available for a long time should have at least one long term member of staff as a privileged owner.

    To allow the privileged owner to be updated when a list is due to expire, before the current privileged owner leaves the University the list's current owners, moderators and the privileged owner’s IT support staff will be notified.  After five weeks without an owner, the list will be removed and the subscribers informed.

    Automation

    The Sympa mailing list service supports a SOAP interface for programmatic interactions with mailing lists, allowing automatic membership listing, population and depopulation, and manipulation of the whitelist and blacklist.

    Example Perl scripts are provided below.  We would welcome any other language example to be sent to sysdev@it.ox.ac.uk.

    Expand All

    The default SOAP interface is available at:

    https://web.maillist.ox.ac.uk/sympasoap/ox

    The WSDL is available at:

    https://web.maillist.ox.ac.uk/ox/wsdl

    In both cases, /ox can be replaced with /admin or /chem if your list is for the maillist.admin.ox.ac.uk or maillist.chem.ox.ac.uk domains respectively.

    Credentials are available to registered IT Support Staff and must be requested by sending an email with the following information:

    To: sysdev@it.ox.ac.uk
    Subject: New maillist SOAP credentials request
    In the message body request a set of credentials for accessing the maillist SOAP interface and state the username in the form $unitcode-$servicetype@login.maillist.ox.ac.uk, for example itserv-courses@login.maillist.ox.ac.uk or wolf-boatclub@login.maillist.ox.ac.uk.

    A corresponding password will be provided after the credentials are created.  The new username can then be added as a list owner of the lists you wish to manage.  Please set it no nomail as the login.maillist.ox.ac.uk domain does not receive mail.  Also note that usernames ending in '@login.maillist.ox.ac.uk' will only appear in the list of owners if you are an owner of the list yourself.

    Integrating Kerberos into Sympa would have involved making some major changes to the core Sympa codebase that are unlikely to be accepted by upstream, meaning IT Services would have to manage the changes locally.

    We hope to provide an SSO-protected self-service interface for managing these credentials.

    The Perl script examples assume you have the following Perl modules installed:

    • SOAP::Lite (available in Debian package libsoap-lite-perl)
    • HTTP::Cookies (available in Debian package libhttp-cookies-perl)
    • YAML (available in Debian package libyaml-libyaml-perl)
    • List::Compare (available in Debian package liblist-compare-perl)

    Call the scripts like: command-to-generate-addresses | script-name or, to read from a file, simply provide it as a command-line argument: script-name /path/to/file.

    The scripts also assume you have a YAML configuration file similar to the following:

    This example code adds new addresses provided on standard input to the list.

     

    #!/usr/bin/perl
    use strict;
    use warnings;
    
    use SOAP::Lite;
    use HTTP::Cookies;
    use YAML;
    
    my $config_file = "config.yml";
    
    my $config = YAML::LoadFile( $config_file )
        or die "Could not load config file\n";
    
    # Use a specific cookie jar so logins work - logging in sets a cookie
    my $cookie_jar = HTTP::Cookies->new();
    
    # If set to false or not set will send the user a 'welcome to the list'
    # message.
    my $quiet = "true";
    
    # force outgoing connections to come from a specific interface by setting local_address
    my $soap = SOAP::Lite->proxy($config->{soap_url}, cookie_jar => $cookie_jar );
    $soap->default_ns('urn:sympasoap');
    
    # log in
    my $som = $soap->login($config->{email}, $config->{password});
    die $som->faultstring if ($som->fault);
    
    while( my $email = <> ){
        chomp( $email );
        my $add_object = $soap->add( $config->{listname}, $email, '', $quiet );
        if( $add_object->fault ){
          die "Error adding $email to $config->{listname}: " . $add_object->faultstring;
        } else {
          print "Added $email to $config->{listname}\n";
        }
    }

    This example adds all addresses provided on standard input, and removes any not provided.

     

    #!/usr/bin/perl
    use strict;
    use warnings;
    
    use SOAP::Lite;
    use HTTP::Cookies;
    use YAML;
    use List::Compare;
    
    my $config_file = "config.yml";
    
    my $config = YAML::LoadFile( $config_file )
        or die "Could not load config file\n";
    
    # Use a specific cookie jar so logins work - logging in sets a cookie
    my $cookie_jar = HTTP::Cookies->new();
    
    # If set to false or not set will send the user a 'welcome to the list'
    # message.
    my $quiet = "true";
    my $listname = $config->{listname};
    
    my $soap = SOAP::Lite->proxy($config->{soap_url}, cookie_jar => $cookie_jar );
    $soap->default_ns('urn:sympasoap');
    
    my $som = $soap->login($config->{email}, $config->{password});
    
    if ($som->fault) { die $som->faultstring }
    
    my $subscribers = $soap->review($listname);
    if( $subscribers->fault ){
        die "Error getting subscribers for $listname: "
            . $subscribers->faultstring . "\n";
    }
    
    my @current_subscribers = grep { !/^no_subscribers$/ }
        @{$subscribers->body()->{reviewResponse}->{return}};
    
    chomp( my @wanted_subscribers = <> );
    
    my $lc = List::Compare->new('--unsorted', \@current_subscribers, \@wanted_subscribers );
    # addresses that are in the second list only
    my @addresses_to_add = $lc->get_complement();
    # addresses that are in the first list only
    my @addresses_to_remove = $lc->get_unique();
    
    foreach my $address ( @addresses_to_add ){
        my $add_object = $soap->add($listname, $address, '', $quiet);
        if( $add_object->fault ){
          die "Error adding $address to $listname: " . $add_object->faultstring;
        } else {
          print "Added $address to $listname\n";
        }
    }
    
    foreach my $address ( @addresses_to_remove ){
        my $rem_object = $soap->del($listname, $address, $quiet);
        if( $rem_object->fault ){
          die "Error removing $address from $listname: " . $rem_object->faultstring;
        } else {
          print "Removed $address from $listname\n";
        }
    }

    This example code adds the lines provided on standard in to the whitelist.

     

    #!/usr/bin/perl
    use strict;
    use warnings;
    
    use SOAP::Lite;
    use HTTP::Cookies;
    use YAML;
    
    my $config_file = "config.yml";
    
    my $config = YAML::LoadFile( $config_file )
        or die "Could not load config file\n";
    
    # Use a specific cookie jar so logins work - logging in sets a cookie
    my $cookie_jar = HTTP::Cookies->new();
    
    my $listname = $config->{listname};
    
    my $soap = SOAP::Lite->proxy($config->{soap_url}, cookie_jar => $cookie_jar );
    $soap->default_ns('urn:sympasoap');
    
    # log in
    my $som = $soap->login($config->{email}, $config->{password});
    if ($som->fault) { die $som->faultstring }
    
    while( my $line = <> ){
        chomp( $line );
        my $add_object = $soap->addWhitelist( $config->{listname}, $line );
        if( $add_object->fault ){
            die "Error adding line to $config->{listname}: " . $add_object->faultstring;
        } else {
            if( $add_object->body()->{addWhitelistResponse}->{result} ){
                print "Added line '$line' to whitelist of $config->{listname}\n";
            } else {
                print "Did not add line '$line' to whitelist of $config->{listname} as it was already present\n";
            }
        }
    }

    This example adds all lines provided on standard input, and removes any not provided.

     

    #!/usr/bin/perl
    use strict;
    use warnings;
    
    use SOAP::Lite;
    use HTTP::Cookies;
    use YAML;
    use List::Compare;
    
    my $config_file = "config.yml";
    
    my $config = YAML::LoadFile( $config_file )
        or die "Could not load config file\n";
    
    # Use a specific cookie jar so logins work - logging in sets a cookie
    my $cookie_jar = HTTP::Cookies->new();
    
    my $listname = $config->{listname};
    
    my $soap = SOAP::Lite->proxy($config->{soap_url}, cookie_jar => $cookie_jar );
    $soap->default_ns('urn:sympasoap');
    
    # log in
    my $som = $soap->login($config->{email}, $config->{password});
    if ($som->fault) { die $som->faultstring }
    
    my $whitelist_object = $soap->getWhitelist($listname);
    if( $whitelist_object->fault ){
        die "Error getting whitelist for $listname: "
            . $whitelist_object->faultstring . "\n";
    }       
    
    my @current_whitelist = grep { !/^no_lines$/ }
        @{$whitelist_object->body()->{getWhitelistResponse}->{return}};
        
    chomp( my @wanted_whitelist = <> );
    
    my $lc = List::Compare->new('--unsorted', \@current_whitelist, \@wanted_whitelist );
    # lines in the second list only
    my @lines_to_add = $lc->get_complement();
    # lines in the first list only
    my @lines_to_remove = $lc->get_unique();
    
    foreach my $line ( @lines_to_add ){
        my $add_object = $soap->addWhitelist( $config->{listname}, $line );
        if( $add_object->fault ){
            die "Error adding line to $config->{listname}: " . $add_object->faultstring;
        } else {
            if( $add_object->body()->{addWhitelistResponse}->{result} ){
                print "Added line '$line' to whitelist of $config->{listname}\n";
            } else {
                print "Did not add line '$line' to whitelist of $config->{listname} as it was already present\n";
            }   
        }   
    }   
    foreach my $line ( @lines_to_remove ){
        my $del_object = $soap->delWhitelist( $config->{listname}, $line );
        if( $del_object->fault ){
            die "Error removing line from $config->{listname}: " . $del_object->faultstring;
        } else {
            if( $del_object->body()->{delWhitelistResponse}->{result} ){
                print "Removed line '$line' from whitelist of $config->{listname}\n";
            } else {
                print "Did not remove line '$line' from whitelist of $config->{listname} as it was already absent\n";
            }   
        }   
    }

    This removes all entries from the blacklist.

     

    #!/usr/bin/perl
    use strict;
    use warnings;
    
    use SOAP::Lite;
    use HTTP::Cookies;
    use YAML;
    
    my $config_file = "config.yml";
    
    my $config = YAML::LoadFile( $config_file )
        or die "Could not load config file\n";
    
    # Use a specific cookie jar so logins work - logging in sets a cookie
    my $cookie_jar = HTTP::Cookies->new();
    
    my $listname = $config->{listname};
    
    my $soap = SOAP::Lite->proxy($config->{soap_url}, cookie_jar => $cookie_jar );
    $soap->default_ns('urn:sympasoap');
    
    # log in
    my $som = $soap->login($config->{email}, $config->{password});
    if ($som->fault) { die $som->faultstring }
    
    # get all the current lines
    # Replace Blacklist with Whitelist to do the same for the whitelist
    my $get_object = $soap->getBlacklist( $config->{listname} );
    if( $get_object->fault ){
        die "Error getting blacklist for $config->{listname}: " . $get_object->faultstring;
    }
    foreach my $line ( @{$get_object->body()->{getBlacklistResponse}->{return}} ){
        # As with the subscribers, no_lines means that the list is empty
        next if $line eq 'no_lines';
    
        my $del_object = $soap->delBlacklist($config->{listname}, $line);
        if( $del_object->fault ){
            die "Could not remove line '$line' from blacklist: " . $del_object->faultstring;
        } else {
            if( $del_object->body()->{delBlacklistResponse}->{result} ){
                print "Removed line '$line' from blacklist\n";
            } else {
                # this case should never happen, but catch it anyway
                print "Got line '$line' to remove from blacklist, but could not remove it\n";
            }
        }
    }

    Get support


    Local IT support provides your first line of on-the-spot help

    FIND MY LOCAL IT TEAM

     

    Common requests and fault reports can be logged using self-service

       USE IT SELF SERVICE      

       LOG A SUPPORT CALL     

    VIEW MY SUPPORT CALLS  

     

    The Central IT Service Desk is available 24x7 on +44 1865 6 12345

    If you do not have access to your Single Sign-On, you can use this form to contact the Service Desk