Merge "Ansible mailman configs"

This commit is contained in:
Zuul 2021-05-19 15:55:09 +00:00 committed by Gerrit Code Review
commit 9fbd1ccf2c
74 changed files with 3507 additions and 31 deletions

View File

@ -138,8 +138,6 @@ groups:
- elasticsearch[0-9]*.open*.org - elasticsearch[0-9]*.open*.org
- ethercalc[0-9]*.open*.org - ethercalc[0-9]*.open*.org
- health[0-9]*.openstack.org - health[0-9]*.openstack.org
- lists*.katacontainers.io
- lists*.open*.org
- logstash-worker[0-9]*.open*.org - logstash-worker[0-9]*.open*.org
- logstash[0-9]*.open*.org - logstash[0-9]*.open*.org
- mirror-update[0-9]*.openstack.org - mirror-update[0-9]*.openstack.org
@ -164,8 +162,6 @@ groups:
- elasticsearch[0-9]*.open*.org - elasticsearch[0-9]*.open*.org
- ethercalc[0-9]*.open*.org - ethercalc[0-9]*.open*.org
- health[0-9]*.openstack.org - health[0-9]*.openstack.org
- lists*.katacontainers.io
- lists*.open*.org
- lists-dev[0-9]*.open*.org - lists-dev[0-9]*.open*.org
- logstash-worker[0-9]*.open*.org - logstash-worker[0-9]*.open*.org
- logstash[0-9]*.open*.org - logstash[0-9]*.open*.org

View File

@ -58,3 +58,18 @@ exim_transports:
headers_add = Errors-To: ${return_path} headers_add = Errors-To: ${return_path}
extra_users: extra_users:
- jbryce - jbryce
mailman_multihost: false
mailman_listdomain: 'lists.katacontainers.io'
mailman_lists:
- name: kata-dev
description: 'Kata Containers Development Mailing List (not for usage questions)'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: kata-hypervisor
description: 'Discussion of security and virtualization targeted at container use cases'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: embargo-notice
description: 'Announcements of embargoed notices for the Kata Containers project'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"

View File

@ -94,3 +94,265 @@ exim_transports:
headers_remove = Errors-To headers_remove = Errors-To
max_rcpt = 1 max_rcpt = 1
return_path = ${local_part:$return_path}+$local_part=$domain@${domain:$return_path} return_path = ${local_part:$return_path}+$local_part=$domain@${domain:$return_path}
mailman_multihost: true
mailman_sites:
- name: airship
listdomain: lists.airshipit.org
install_languages: ['en']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: airship-announce
description: 'Announcements of Airship releases and other important information.'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: airship-discuss
description: 'Discussion of Airship usage and development.'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: airship-job-failures
description: 'Notification messages for failures from CICD jobs.'
admin: 'roman.gorshunov@att.com'
password: "{{ mailman_list_password }}"
- name: airship-security
description: 'Public Airship security advisories.'
admin: 'andrew.walters@att.com'
password: "{{ mailman_list_password }}"
- name: airship-embargo-notice
description: 'Embargoed security vulnerability announcements for Airship consumers.'
admin: 'andrew.walters@att.com'
password: "{{ mailman_list_password }}"
- name: opendev
listdomain: lists.opendev.org
install_languages: ['en']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: rust-vmm
description: 'Collaborating on Rust-based virtual machine monitors.'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: rustyk8s
description: 'Collaborating on Rust-based Kubernetes API.'
admin: 'allison@lohutok.net'
password: "{{ mailman_list_password }}"
- name: nbmp-discuss
description: 'Collaborating on Network Based Media Processing related platform and infrastructure systems usage and development.'
admin: 'ildiko@openstack.org'
password: "{{ mailman_list_password }}"
- name: service-announce
description: 'Announcement list for OpenDev services.'
admin: 'cboylan@sapwetik.org'
password: "{{ mailman_list_password }}"
- name: service-discuss
description: 'Discussion list for OpenDev services.'
admin: 'cboylan@sapwetik.org'
password: "{{ mailman_list_password }}"
- name: service-incident
description: 'Private list for OpenDev incident coordination.'
admin: 'cboylan@sapwetik.org'
password: "{{ mailman_list_password }}"
- name: openinfralabs
description: 'Discussion of the OpenInfra Labs academic and research resource sharing effort'
admin: 'mnaser@vexxhost.com'
password: "{{ mailman_list_password }}"
- name: openstack
listdomain: lists.openstack.org
install_languages: ['de', 'fr', 'it', 'ko', 'ru', 'vi', 'zh_TW']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-es
description: 'Lista de correo acerca de OpenStack en español'
admin: 'flavio@redhat.com'
password: "{{ mailman_list_password }}"
- name: openstack-fr
description: 'List of the OpenStack french user group'
admin: 'erwan@erwan.com'
password: "{{ mailman_list_password }}"
- name: openstack-de
description: 'List for German-speaking OpenStack users'
admin: 'christian@berendt.io'
password: "{{ mailman_list_password }}"
- name: openstack-i18n
description: 'List of the OpenStack Internationalization team.'
admin: 'guoyingc@cn.ibm.com'
password: "{{ mailman_list_password }}"
- name: openstack-i18n-de
description: 'List of the German OpenStack Internationalization team.'
admin: 'robert.simai@suse.com'
password: "{{ mailman_list_password }}"
- name: openstack-ir
description: 'OpenStack IRAN Community Discussions in Persian/Farsi'
admin: 'Roozbeh.Shafiee@Gmail.Com'
password: "{{ mailman_list_password }}"
- name: openstack-it
description: 'Discussioni su OpenStack in italiano'
admin: 'stefano@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-el
description: 'List of the OpenStack Greek User Group'
admin: 'aparathyras@stackmasters.eu'
password: "{{ mailman_list_password }}"
- name: openstack-travel-committee
description: 'Private discussions for the OpenStack Travel Program Committee for Hong Kong Summit 2013.'
admin: 'communitymngr@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-personas
description: 'A group of designers, researchers, developers, writers and users that are creating a set of personas for OpenStack that are intended to help drive development around the needs of our users.'
admin: 'pieter.c.kruithof-jr@hp.com'
password: "{{ mailman_list_password }}"
- name: openstack-vi
description: 'Discussions in Vietnamese - please add Vietnamese translation here'
admin: 'hang.tran@dtt.vn'
password: "{{ mailman_list_password }}"
- name: openstack-tw
description: 'OpenStack Taiwan User Group 臺灣使用者郵件群組)'
admin: 'macjacktw@hotmail.com'
password: "{{ mailman_list_password }}"
- name: openstack-ko
description: 'OpenStack Korea Community Discussions in Korean (오픈스택 한국 커뮤니티 메일링리스트)'
admin: 'ianyrchoi@gmail.com'
password: "{{ mailman_list_password }}"
- name: openstack-ru
description: 'Рассылка для обсуждения OpenStack на русском'
admin: 'ilyaalekseyev@acm.org'
password: "{{ mailman_list_password }}"
- name: openstack-zh
description: 'OpenStack社区中文讨论群组'
admin: 'yeluaiesec@gmail.com'
password: "{{ mailman_list_password }}"
- name: nov-2013-track-chairs
description: 'Coordination of tracks at OpenStack Summit April 2013'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-track-chairs
description: 'Coordination of tracks at OpenStack Summits'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: summitsponsors
description: 'Coordination among OpenStack Summit event sponsors'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-sos
description: 'Coordination of activities for Significant Others at Summits'
admin: 'dms@danplanet.com'
password: "{{ mailman_list_password }}"
- name: defcore-committee
description: 'Discussions of the OpenStack Foundation Core Definition Committee'
admin: 'josh@openstack.org'
password: "{{ mailman_list_password }}"
- name: ambassadors
description: 'Private discussions between OpenStack Ambassadors'
admin: 'tom@openstack.org'
password: "{{ mailman_list_password }}"
- name: superuser
description: 'Discussions for Superuser editorial advisors to collaborate, and for readers to be able to contact the editorial team to make suggestions, provide feedback'
admin: 'lauren@openstack.org'
password: "{{ mailman_list_password }}"
- name: admin-cert-wg
description: 'Collaboration workspace for members of the Certified OpenStack Administrator Working Group of the User Commitee/Board.'
admin: 'heidi@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-api-consumers
description: 'Discussions around consuming the OpenStack REST APIs and development of API-consuming SDKs and frameworks'
admin: 'mordred@inaugust.com'
password: "{{ mailman_list_password }}"
- name: enterprise-wg
description: 'Collaboration workspace for members of the Win The Enterprise Working Group of the User Commitee/Board.'
admin: 'carol.l.barrett@intel.com'
password: "{{ mailman_list_password }}"
- name: product-wg
description: 'Collaboration workspace for OpenStack-related Product Managers working group.'
admin: 'stefano@openstack.org'
password: "{{ mailman_list_password }}"
- name: tax-affairs
description: 'board committee focused on tax issues.'
admin: 'seanroberts66@gmail.com'
password: "{{ mailman_list_password }}"
- name: third-party-announce
description: 'Announcements for third party CI operators.'
admin: 'anteaya@anteaya.info'
password: "{{ mailman_list_password }}"
- name: foundation-testing-standards
description: 'OpenStack Foundation test standards (for humans, not drivers) working group list.'
admin: 'seanroberts66@gmail.com'
password: "{{ mailman_list_password }}"
- name: analyst-relations
description: 'Coordination of Analyst Relations Working Group.'
admin: 'lauren@openstack.org'
password: "{{ mailman_list_password }}"
- name: app-catalog-admin
description: 'Coordinate admin details for OpenStack Community App Catalog.'
admin: 'doc@aedo.net'
password: "{{ mailman_list_password }}"
- name: openstack-i18n-fr
description: 'List of the OpenStack Internationalization team, french local group.'
admin: 'jftalta@gmail.com'
password: "{{ mailman_list_password }}"
- name: release-job-failures
description: 'Notification messages for failures from release-related build jobs.'
admin: 'doug@doughellmann.com'
password: "{{ mailman_list_password }}"
- name: embargo-notice
description: 'Announcements to stakeholders for embargoed security vulnerabilities.'
admin: 'jeremy@openstack.org'
password: "{{ mailman_list_password }}"
- name: release-announce
description: 'Announcement of official OpenStack releases.'
admin: 'thierry@openstack.org'
password: "{{ mailman_list_password }}"
- name: edge-computing
description: 'Organizing efforts around the edge-computing focus area.'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-mentoring
description: 'List to coordinate interactions between mentors and mentees of the OpenStack mentoring program. Also for questions about the mentoring program (i.e. how to get involved, how it works, etc.'
admin: 'amy@demarco.com'
password: "{{ mailman_list_password }}"
- name: openstack-discuss
description: 'Discussion of OpenStack usage and development.'
admin: 'fungi@yuggoth.org'
password: "{{ mailman_list_password }}"
- name: starlingx
listdomain: lists.starlingx.io
install_languages: ['en']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: starlingx-announce
description: 'Announcements of StarlingX releases and other important information.'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: starlingx-discuss
description: 'Discussion of StarlingX usage and development.'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: zuul
listdomain: lists.zuul-ci.org
install_languages: ['en']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: zuul-announce
description: 'Announcements of Zuul releases and other important information.'
admin: 'corvus@inaugust.com'
password: "{{ mailman_list_password }}"
- name: zuul-discuss
description: 'Discussion of Zuul usage and development.'
admin: 'corvus@inaugust.com'
password: "{{ mailman_list_password }}"
- name: zuul-jobs-failures
description: 'Gets notifications about zuul-jobs periodic job failures.'
admin: 'ssbarnea@redhat.com'
password: "{{ mailman_list_password }}"

View File

@ -17,24 +17,6 @@ node /^cacti\d+\.open.*\.org$/ {
} }
} }
# Node-OS: xenial
node /^lists\d*\.open.*\.org$/ {
class { 'openstack_project::server': }
class { 'openstack_project::lists':
listpassword => hiera('listpassword'),
}
}
# Node-OS: xenial
node /^lists\d*\.katacontainers\.io$/ {
class { 'openstack_project::server': }
class { 'openstack_project::kata_lists':
listpassword => hiera('listpassword'),
}
}
# Node-OS: xenial # Node-OS: xenial
node /^paste\d*\.open.*\.org$/ { node /^paste\d*\.open.*\.org$/ {
$group = "paste" $group = "paste"

View File

@ -20,8 +20,6 @@ results:
lists.katacontainers.io: lists.katacontainers.io:
- mailman - mailman
- puppet
- puppet4
logstash-worker02.openstack.org: logstash-worker02.openstack.org:
- logstash-worker - logstash-worker

View File

@ -0,0 +1 @@
Role to create a mailman list if it doesn't already exist

View File

@ -0,0 +1,35 @@
# The bulk of this role can likely be replaced with:
# https://github.com/CCI-MOC/moc-ansible-mailman
# Just a note for possible future improvement.
- name: Block for multihost lists
block:
- name: Set mailman site root fact
set_fact:
mm_site_root: "/srv/mailman/{{ mm_site_name }}"
cacheable: no
- name: Check if the site list exists
command: list_lists --bare
environment:
MAILMAN_SITE_DIR: "{{ mm_site_root }}"
register: listlists
- name: Create the site list if it doesn't exist
command: "newlist {% if mailman_test_mode is defined and mailman_test_mode %} -q {% endif %} {{ mm_list_name }} {{ mm_list_admin }} {{ mm_list_password }}"
environment:
MAILMAN_SITE_DIR: "{{ mm_site_root }}"
when:
- ( listlists.stdout_lines | intersect([ mm_list_name ]) | length | int ) == 0
when: mm_site_name != "_default"
- name: Block for normal lists
block:
- name: Check if the list exists
command: list_lists --bare
register: listlists
- name: Create the list if it doesn't exist
command: "newlist {% if mailman_test_mode is defined and mailman_test_mode %} -q {% endif %} {{ mm_list_name }} {{ mm_list_admin }} {{ mm_list_password }}"
when:
- ( listlists.stdout_lines | intersect([ mm_list_name ]) | length | int ) == 0
when: mm_site_name == "_default"
# TODO we accept a description parameter but don't do anything with it

View File

@ -0,0 +1 @@
Role to configure a mailman site in a multihost environment

View File

@ -0,0 +1,60 @@
The administrative requests are displayed in one of two ways, on a <a
href="%(summaryurl)s">summary page</a>, and on a <em>details</em> page.
The summary page contains pending subscription and unsubscription
requests, as well as postings being held for your approval, grouped by
sender email address. The details page contains a more detailed view of
each held message, including the all the message's headers and an
excerpt of the message body.
<p>On all the pages, the following actions are available:
<ul> <li><b>Defer</b> -- Defer your decision until later. No action is
taken now for this pending administrative request, but for held
postings, you can still forward or preserve the message (see below).
<li><b>Approve</b> -- Approve the message, sending it on to the list.
For membership requests, approve the change in membership status.
<li><b>Reject</b> -- Reject the message, sending a rejection notice to
the sender, and discarding the original message. For membership
requests, reject the change in membership status. In either case, you
should add a reason for the rejection in the accompanying text box.
<li><b>Discard</b> -- Throw away the original message, without sending a
rejection notice. For membership requests, this simply discards the
request without notice to the person making the request. This is
usually the action you want to take for known spam. </ul>
<p>For held messages, turn on the <b>Preserve</b> option if you want to
save a copy of the message for the site administrator. This is useful
for abusive messages that you want to discard, but need to keep a record
of for later inspection.
<p>Turn on the <b>Forward to</b> option, and fill in the forwarding
address if you want to forward the message to someone else not on the
list. To edit a held message before it is sent on to the list, you
should forward the message to yourself (or the list owners), and discard
the original message. Then, when the message shows up in your mailbox,
make your edits and resend the message to the list, including an
<tt>Approved:</tt> header with the list password as its value. It is
proper netiquette in this case to include a note in the resent message,
explaining that you have modified the text.
<p>If the sender is a list member who is being moderated, you can
optionally clear their moderation flag. This is useful when your list
is configured to put new members on probation, and you've decided that
this member can be trusted to post to the list without approval.
<p>If the sender is not a list member, you can add the email address to
a <em>sender filter</em>. Sender filters are described on the <a
href="%(filterurl)s">sender filter privacy page</a>, and may be one of
<b>auto-accept</b> (Accepts), <b>auto-hold</b> (Holds),
<b>auto-reject</b> (Rejects), or <b>auto-discard</b> (Discards). This
option will not be available if the address is already on one of the
sender filters.
<p>When you're finished, click on the <em>Submit All Data</em> button at
the top or bottom of the page. This button will submit all selected
actions for all administrative requests that you've made a decision for.
<p><a href="%(summaryurl)s">Return to the summary page</a>.

View File

@ -0,0 +1,10 @@
This page contains a subset of the <em>%(listname)s</em> mailing list
postings that are being held for your approval. It currently shows
%(description)s
<p>For each administrative request, please select the action to take,
clicking on the <b>Submit All Data</b> when finished. More detailed
instructions are available <a href="%(detailsurl)s">here</a>.
<p>You can also <a href="%(summaryurl)s">view a summary</a> of all
pending requests.

View File

@ -0,0 +1,14 @@
This page contains a summary of the current set of administrative
requests requiring your approval for the
<a href="%(adminurl)s"><em>%(listname)s</em> mailing list</a>.
First, you will find the list of pending
subscription and unsubscription requests, if any, followed by any
postings being held for your approval.
<p>For each administrative request, please select the action to take,
clicking on the <b>Submit All Data</b> button when finished.
<a href="%(detailsurl)s">More detailed instructions</a> are also
available.
<p>You can also <a href="%(viewallurl)s">view the details</a> of all
held postings.

View File

@ -0,0 +1,3 @@
%(member)s has been successfully subscribed to %(listname)s.

View File

@ -0,0 +1,2 @@
%(member)s has been removed from %(listname)s.

View File

@ -0,0 +1,40 @@
<html>
<head>
<title>%(listname)s %(who)s Authentication</title>
<script>function sf(){document.f.adminpw.focus();}</script>
</head>
<body bgcolor="#ffffff" onLoad="sf()">
<FORM METHOD=POST ACTION="%(path)s" name="f">
%(message)s
<TABLE WIDTH="100%%" BORDER="0" CELLSPACING="4" CELLPADDING="5">
<TR>
<TD COLSPAN="2" WIDTH="100%%" BGCOLOR="#99CCFF" ALIGN="CENTER">
<B><FONT COLOR="#000000" SIZE="+1">%(listname)s %(who)s
Authentication</FONT></B>
</TD>
</TR>
<tr>
<TD><div ALIGN="Right">List %(who)s Password:</div></TD>
<TD><INPUT TYPE="password" NAME="adminpw" SIZE="30"></TD>
</tr>
<tr>
<td colspan=2 align=middle><INPUT type="SUBMIT"
name="admlogin"
value="Let me in...">
</td>
</tr>
</TABLE>
<p><strong><em>Important:</em></strong> From this point on, you
must have cookies enabled in your browser, otherwise no
administrative changes will take effect.
<p>Session cookies are used in Mailman's
administrative interface so that you don't need to
re-authenticate with every administrative operation. This
cookie will expire automatically when you exit your browser, or
you can explicitly expire the cookie by hitting the
<em>Logout</em> link under <em>Other Administrative
Activities</em> (which you'll see once you successfully log in).
</FORM>
</body>
</html>

View File

@ -0,0 +1,15 @@
Your request to %(requestaddr)s:
%(cmd)s
has been forwarded to the person running the list.
This is probably because you are trying to subscribe to a 'closed'
list.
You will receive email notification of the list owner's decision about
your subscription request.
Any questions about the list owner's policy should be directed to:
%(adminaddr)s

View File

@ -0,0 +1,4 @@
<LI><A HREF="%(filename)s">%(subject)s
</A><A NAME="%(sequence)i">&nbsp;</A>
<I>%(author)s
</I>

View File

@ -0,0 +1,64 @@
</ul>
<p>
<a name="end"><b>Last message date:</b></a>
<i>%(lastdate)s</i><br>
<b>Archived on:</b> <i>%(archivedate)s</i>
<p>
<ul>
<li> <b>Messages sorted by:</b>
%(thread_ref)s
%(subject_ref)s
%(author_ref)s
%(date_ref)s
<li><b><a href="%(listinfo)s">More info on this list...
</a></b></li>
</ul>
<div class="container">
<hr>
<i>This archive was generated by Pipermail %(version)s.</i>
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</BODY>
</HTML>

View File

@ -0,0 +1,89 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>OpenStack Open Source Cloud Computing Software &raquo; The %(listname)s %(archive)s Archive by %(archtype)s</title>
<META NAME="robots" CONTENT="noindex,follow">
%(encoding)s
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<a name="start"></A>
<h1>%(archive)s Archives by %(archtype)s</h1>
<ul>
<li> <b>Messages sorted by:</b>
%(thread_ref)s
%(subject_ref)s
%(author_ref)s
%(date_ref)s
<li><b><a href="%(listinfo)s">More info on this list...
</a></b></li>
</ul>
<p><b>Starting:</b> <i>%(firstdate)s</i><br>
<b>Ending:</b> <i>%(lastdate)s</i><br>
<b>Messages:</b> %(size)s<p>
<ul>

View File

@ -0,0 +1,4 @@
<table border=3>
<tr><td>Archive</td>
<td>View by:</td>
<td>Downloadable version</td></tr>

View File

@ -0,0 +1,130 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>OpenStack Open Source Cloud Computing Software &raquo; The %(listname)s Archives</title>
<META NAME="robots" CONTENT="noindex,follow">
%(meta)s
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<h1>The %(listname)s Archives </h1>
<p>
You can get <a href="%(listinfo)s">more information about this list</a>
or you can <a href="%(fullarch)s">download the full raw archive</a>
(%(size)s).
</p>
%(noarchive_msg)s
%(archive_listing_start)s
%(archive_listing)s
%(archive_listing_end)s
<div class="container">
<hr>
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</BODY>
</HTML>

View File

@ -0,0 +1,12 @@
<tr>
<td>%(archivelabel)s:</td>
<td>
<A href="%(archive)s/thread.html">[ Thread ]</a>
<A href="%(archive)s/subject.html">[ Subject ]</a>
<A href="%(archive)s/author.html">[ Author ]</a>
<A href="%(archive)s/date.html">[ Date ]</a>
</td>
%(textlink)s
</tr>

View File

@ -0,0 +1,131 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>OpenStack Open Source Cloud Computing Software &raquo; The %(listname)s Archives</title>
<META NAME="robots" CONTENT="noindex,follow">
%(meta)s
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<h1>The %(listname)s Archives </h1>
<p>
You can get <a href="%(listinfo)s">more information about this list</a>.
</p>
%(noarchive_msg)s
%(archive_listing_start)s
%(archive_listing)s
%(archive_listing_end)s
<div class="container">
<hr>
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</BODY>
</HTML>

View File

@ -0,0 +1,168 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>OpenStack Open Source Cloud Computing Software &raquo; Message: %(title)s </TITLE>
<LINK REL="Index" HREF="index.html" >
<LINK REL="made" HREF="mailto:%(email_url)s?Subject=%(subject_url)s&In-Reply-To=%(in_reply_to_url)s">
<META NAME="robots" CONTENT="index,nofollow">
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<style type="text/css">
pre {
white-space: pre-wrap; /* css-2.1, curent FF, Opera, Safari */
}
</style>
%(encoding)s
%(prev)s
%(next)s
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<H1>%(subject_html)s</H1>
<B>%(author_html)s</B>
<A HREF="mailto:%(email_url)s?Subject=%(subject_url)s&In-Reply-To=%(in_reply_to_url)s"
TITLE="%(subject_html)s">%(email_html)s
</A><BR>
<I>%(datestr_html)s</I>
<P><UL>
%(prev_wsubj)s
%(next_wsubj)s
<LI> <B>Messages sorted by:</B>
<a href="date.html#%(sequence)s">[ date ]</a>
<a href="thread.html#%(sequence)s">[ thread ]</a>
<a href="subject.html#%(sequence)s">[ subject ]</a>
<a href="author.html#%(sequence)s">[ author ]</a>
</LI>
</UL>
<HR>
<!--beginarticle-->
%(body)s
<!--endarticle-->
<HR>
<P><UL>
<!--threads-->
%(prev_wsubj)s
%(next_wsubj)s
<LI> <B>Messages sorted by:</B>
<a href="date.html#%(sequence)s">[ date ]</a>
<a href="thread.html#%(sequence)s">[ thread ]</a>
<a href="subject.html#%(sequence)s">[ subject ]</a>
<a href="author.html#%(sequence)s">[ author ]</a>
</LI>
</UL>
<hr>
<a href="%(listurl)s">More information about the %(listname)s
mailing list</a><br>
<div class="container">
<hr>
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</body></html>

View File

@ -0,0 +1,13 @@
This is a Mailman mailing list bounce action notice:
List: %(listname)s
Member: %(addr)s
Action: Subscription %(negative)s%(did)s.
Reason: Excessive or fatal bounces.
%(but)s
%(reenable)s
The triggering bounce notice is attached below.
Questions?
Contact the Mailman site administrator at %(owneraddr)s.

View File

@ -0,0 +1,7 @@
The %(real_name)s@%(host_name)s mailing list has %(count)d request(s)
waiting for your consideration at:
%(adminDB)s
Please attend to this at your earliest convenience. This notice of
pending requests, if any, will be sent out daily.

View File

@ -0,0 +1,34 @@
The %(listname)s mailing list has just undergone a big change. It is
running on a new mailing list package called "Mailman". This will
hopefully solve a lot of problems that administering this list has
presented.
How does this affect you?
1) Mail intended for the whole list should be sent to: %(listaddr)s.
2) You have been given an arbitrary password to prevent others from
unsubscribing you without your knowledge. It will be mailed to you in
a separate email, which you may have already received. Don't worry if
you forget this password; a reminder will be sent to you via email
every month.
3) If you have World Wide Web access, you can use it any time to
unsubscribe from this list, to switch to and from digest mode, to
check back issues of the list (which will be available after the list
has been getting posts for a day or so), etc. The Web address for
these resources is:
%(listinfo_url)s
4) If you do not have WWW access, you can do these same things via
email. Send mail to %(requestaddr)s with a subject or body containing
just the word "help" (without the quotes). You will receive an
automated reply giving you further directions.
Please address any questions or problems with this new setup to:
%(adminaddr)s.
This message was auto-generated by Mailman %(version)s. For more
information on the Mailman software, visit the Mailman homepage at
http://www.list.org/

View File

@ -0,0 +1,19 @@
This is a reminder, sent out once a month, about your %(hostname)s
mailing list memberships. It includes your subscription info and how
to use it to change it or unsubscribe from a list.
You can visit the URLs to change your membership status or
configuration, including unsubscribing, setting digest-style delivery
or disabling delivery altogether (e.g., for a vacation), and so on.
In addition to the URL interfaces, you can also use email to make such
changes. For more info, send a message to the '-request' address of
the list (for example, %(exreq)s) containing just the word 'help' in
the message body, and an email message will be sent to you with
instructions.
If you have questions, problems, comments, etc, send them to
%(owner)s. Thanks!
Passwords for %(useraddr)s:

View File

@ -0,0 +1,25 @@
Your membership in the mailing list %(listname)s has been disabled
%(reason)s. You will not get any more messages from this
list until you re-enable your membership. You will receive
%(noticesleft)s more reminders like this before your membership in the
list is deleted.
To re-enable your membership, you can simply respond to this message
(leaving the Subject: line intact), or visit the confirmation page at
%(confirmurl)s
You can also visit your membership page at
%(optionsurl)s
On your membership page, you can change various delivery options such
as your email address and whether you get digests or not. As a
reminder, your membership password is
%(password)s
If you have any questions or problems, you can contact the list owner
at
%(owneraddr)s

View File

@ -0,0 +1,125 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>OpenStack Open Source Cloud Computing Software &raquo; The %(listname)s Archives</title>
<META NAME="robots" CONTENT="noindex,follow">
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
i<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<h1>The %(listname)s Archives </h1>
<p>
No messages have been posted to this list yet, so the archives are
currently empty. You can get <a href="%(listinfo)s">more information
about this list</a>.
</p>
<div class="container">
<hr>
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</BODY>
</HTML>

View File

@ -0,0 +1,28 @@
This text can include
<a href="http://docs.python.org/library/stdtypes.html#string-formatting-operations">Python
format strings</a> which are resolved against list attributes. The
list of substitutions allowed are:
<ul>
<li><b>real_name</b> - The "pretty" name of the list; usually
the list name with capitalization.
<li><b>list_name</b> - The name by which the list is
identified in URLs, where case is significant.
<li><b>host_name</b> - The fully qualified domain name
that the list server runs on.
<li><b>web_page_url</b> - The base URL for Mailman. This
can be appended with,
e.g. <em>listinfo/%(list_name)s</em> to yield the
listinfo page for the mailing list.
<li><b>description</b> - The brief description of the
mailing list.
<li><b>info</b> - The full description of the mailing
list.
<li><b>cgiext</b> - The extension added to CGI scripts.
</ul>

View File

@ -0,0 +1,33 @@
Help for %(listname)s mailing list:
This is email command help for version %(version)s of the "Mailman"
list manager. The following describes commands you can send to get
information about and control your subscription to Mailman lists at
this site. A command can be in the subject line or in the body of the
message.
Note that much of the following can also be accomplished via the World
Wide Web, at:
%(listinfo_url)s
In particular, you can use the Web site to have your password sent to
your delivery address.
List specific commands (subscribe, who, etc) should be sent to the
*-request address for the particular list, e.g. for the 'mailman'
list, use 'mailman-request@...'.
About the descriptions - words in "<>"s signify REQUIRED items and
words in "[]" denote OPTIONAL items. Do not include the "<>"s or
"[]"s when you use the commands.
The following commands are valid:
%(commands)s
Commands should be sent to %(requestaddr)s
Questions and concerns for the attention of a person should be sent to
%(adminaddr)s

View File

@ -0,0 +1,20 @@
Your address "%(email)s" has been invited to join the %(listname)s
mailing list at %(hostname)s by the %(listname)s mailing list owner.
You may accept the invitation by simply replying to this message,
keeping the Subject: header intact.
You can also visit this web page:
%(confirmurl)s
Or you should include the following line -- and only the following
line -- in a message to %(requestaddr)s:
confirm %(cookie)s
Note that simply sending a `reply' to this message should work from
most mail readers.
If you want to decline this invitation, please simply disregard this
message. If you have any questions, please send them to
%(listowner)s.

View File

@ -0,0 +1,254 @@
<!-- $Revision: 5865 $ -->
<HTML>
<TITLE>OpenStack Open Source Cloud Computing Software &raquo; <MM-List-Name> - <MM-List-Description></TITLE>
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<P>
<TABLE COLS="1" BORDER="0" CELLSPACING="4" CELLPADDING="5">
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#D8D8D8" ALIGN="CENTER">
<B><FONT COLOR="#000000" SIZE="+1"><MM-List-Name> --
<MM-List-Description></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
<p>&nbsp;
</td>
</tr>
<tr>
<TD COLSPAN="1" WIDTH="100%" BGCOLOR="#B6D8E2">
<B><FONT COLOR="#000000">About <MM-List-Name></FONT></B>
</TD>
<TD COLSPAN="1" WIDTH="100%" BGCOLOR="#B6D8E2">
<MM-lang-form-start><MM-displang-box> <MM-list-langs>
<MM-form-end>
<MM-Subscribe-Form-Start>
</TD>
</TR>
<tr>
<td colspan="2">
<P><MM-List-Info></P>
<p> To see the collection of prior postings to the list,
visit the <MM-Archive><MM-List-Name>
Archives</MM-Archive>.
<MM-Restricted-List-Message>
</p>
</TD>
</TR>
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#B6D8E2">
<B><FONT COLOR="#000000">Using <MM-List-Name></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
To post a message to all the list members, send email to
<A HREF="mailto:<MM-Posting-Addr>"><MM-Posting-Addr></A>.
<p>You can subscribe to the list, or change your existing
subscription, in the sections below.
</td>
</tr>
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#B6D8E2">
<B><FONT COLOR="#000000">Subscribing to <MM-List-Name></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
<P>
Subscribe to <MM-List-Name> by filling out the following
form.
<ul>
<MM-List-Subscription-Msg>
<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="2"
WIDTH="70%" HEIGHT= "112">
<TR>
<TD BGCOLOR="#dddddd" WIDTH="55%">Your email address:</TD>
<TD WIDTH="33%"><MM-Subscribe-Box>
</TD>
<TD WIDTH="12%">&nbsp;</TD></TR>
<tr>
<td bgcolor="#dddddd" width="55%">Your name (optional):</td>
<td width="33%"><mm-fullname-box></td>
<TD WIDTH="12%">&nbsp;</TD></TR>
<TR>
<TD COLSPAN="3"><FONT SIZE=-1>You may enter a
privacy password below. This provides only mild security,
but should prevent others from messing with your
subscription. <b>Do not use a valuable password</b> as
it will occasionally be emailed back to you in cleartext.
<p>If you choose not to enter a password, one will be
automatically generated for you, and it will be sent to
you once you've confirmed your subscription. You can
always request a mail-back of your password when you edit
your personal options.
<MM-Reminder>
</TD>
</TR>
<TR>
<TD BGCOLOR="#dddddd">Pick a password:</TD>
<TD><MM-New-Password-Box></TD>
<TD>&nbsp;</TD></TR>
<TR>
<TD BGCOLOR="#dddddd">Reenter password to confirm:</TD>
<TD><MM-Confirm-Password></TD>
<TD>&nbsp; </TD></TR>
<tr>
<TD BGCOLOR="#dddddd">Which language do you prefer to display your messages?</TD>
<TD> <MM-list-langs></TD>
<TD>&nbsp; </TD></TR>
<mm-digest-question-start>
<tr>
<td>Would you like to receive list mail batched in a daily
digest?
</td>
<td><MM-Undigest-Radio-Button> No
<MM-Digest-Radio-Button> Yes
</TD>
</tr>
<mm-digest-question-end>
<tr>
<td colspan="3">
<center><MM-Subscribe-Button></P></center>
</TABLE>
<MM-Form-End>
</ul>
</td>
</tr>
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#B6D8E2">
<a name="subscribers">
<B><FONT COLOR="#000000"><MM-List-Name> Subscribers</FONT></B></a>
</TD>
</TR>
<tr>
<TD COLSPAN="2" WIDTH="100%">
<MM-Roster-Form-Start>
<MM-Roster-Option>
<MM-Form-End>
<p>
<MM-Options-Form-Start>
<MM-Editing-Options>
<MM-Form-End>
</td>
</tr>
</table>
<div class="container">
<MM-Mailman-Footer>
<hr />
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</BODY>
</HTML>

View File

@ -0,0 +1,13 @@
Send %(real_name)s mailing list submissions to
%(got_list_email)s
To subscribe or unsubscribe via the World Wide Web, visit
%(got_listinfo_url)s
or, via email, send a message with subject or body 'help' to
%(got_request_email)s
You can reach the person managing the list at
%(got_owner_email)s
When replying, please edit your Subject line so it is more specific than
"Re: Contents of %(real_name)s digest..."

View File

@ -0,0 +1,35 @@
The mailing list `%(listname)s' has just been created for you. The
following is some basic information about your mailing list.
Your mailing list password is:
%(password)s
You need this password to configure your mailing list. You also need
it to handle administrative requests, such as approving mail if you
choose to run a moderated list.
You can configure your mailing list at the following web page:
%(admin_url)s
The web page for users of your mailing list is:
%(listinfo_url)s
You can even customize these web pages from the list configuration
page. However, you do need to know HTML to be able to do this.
There is also an email-based interface for users (not administrators)
of your list; you can get info about using it by sending a message
with just the word `help' as subject or in the body, to:
%(requestaddr)s
To unsubscribe a user: from the mailing list 'listinfo' web page,
click on or enter the user's email address as if you were that user.
Where that user would put in their password to unsubscribe, put in
your admin password. You can also use your password to change
member's options, including digestification, delivery disabling, etc.
Please address all questions to %(siteowner)s.

View File

@ -0,0 +1,8 @@
We have received a message from your address `%(sender)s' requesting
an automated response from the %(listname)s mailing list. We have
seen %(num)s such messages from you today. In order to avoid problems
such as mail loops between email robots, we will not be sending you
any further email responses today. Please try again tomorrow.
If you believe this message is in error, or if you have any questions,
please contact the list owner at %(owneremail)s.

View File

@ -0,0 +1,422 @@
<html>
<head>
<link rel="SHORTCUT ICON" href="<mm-favicon>">
<title>OpenStack Open Source Cloud Computing Software &raquo; <MM-Presentable-User> membership configuration for <MM-List-Name> </title>
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="5">
<TR><TD WIDTH="100%" BGCOLOR="#D8D8D8"><B>
<FONT COLOR="#000000" SIZE=+1>
<MM-List-Name> mailing list membership configuration for
<MM-Presentable-User>
</FONT></B></TD></TR>
</TABLE>
<p>
<table width="100%" border="0" cellspacing="5" cellpadding="5">
<tr><td>
<b><MM-Presentable-User></b>'s subscription status,
password, and options for the <MM-List-Name> mailing list.
</td><td><MM-Form-Start><mm-logout-button><MM-Form-End></td>
</tr><tr>
<td colspan="2">
<MM-Case-Preserved-User>
<MM-Disabled-Notice>
<p><mm-results>
</td>
</tr>
</table>
<MM-Form-Start>
<p>
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="5">
<TR><TD WIDTH="100%" BGCOLOR="#B6D8E2" colspan="2">
<FONT COLOR="#000000">
<B>Changing your <MM-List-Name> membership information</B>
</FONT></TD></TR>
<tr><td colspan="2">You can change the address that you are subscribed
to the mailing list with by entering the new address in the
fields below. Note that a confirmation email will be sent to
the new address, and the change must be confirmed before it is
processed.
<p>Confirmations time out after about <mm-pending-days>.
<p>You can also optionally set or change your real name
(i.e. <em>John Smith</em>).
<p>If you want to make the membership changes for all the
lists that you are subscribed to at <mm-host>, turn on the
<em>Change globally</em> check box.
</td></tr>
<tr><td><center>
<table border="0" cellspacing="2" cellpadding="2" width="80%" cols="2">
<tr><td bgcolor="#dddddd"><div align="right">New address:</div></td>
<td><mm-new-address-box></td>
</tr>
<tr><td bgcolor="#dddddd"><div align="right">Again to
confirm:</div></td>
<td><mm-confirm-address-box></td>
</tr>
</tr></table></center>
</td>
<td><center>
<table border="0" cellspacing="2" cellpadding="2" width="80%" cols="2">
<tr><td bgcolor="#dddddd"><div align="right">Your name
(optional):</div></td>
<td><mm-fullname-box></td>
</tr>
</table></center>
</td>
</tr>
<tr><td colspan="2"><center><mm-change-address-button>
<p><mm-global-change-of-address>Change globally</center></td>
</tr>
</table>
<p>
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="5" CELLPADDING="5">
<TR><TD WIDTH="50%" BGCOLOR="#FFF0D0"><FONT COLOR="#000000">
<B>Unsubscribing from <MM-List-Name></B></td>
<TD WIDTH="50%" BGCOLOR="#FFF0D0"><FONT COLOR="#000000">
<B>Your other <MM-Host> subscriptions</B>
</FONT></TD></TR>
<tr><td>
Turn on the confirmation checkbox and hit this button to
unsubscribe from this mailing list. <strong>Warning:</strong>
This action will be taken immediately!
<p>
<center><MM-Unsubscribe-Button></center></td>
<td>
You can view a list of all the other mailing lists at
<mm-host> for which you are a member. Use this if you want to
make the same membership option changes to this other
subscriptions.
<p>
<center><MM-Other-Subscriptions-Submit></center>
</TD></TR>
</table>
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="5">
<TR><TD COLSPAN=2 WIDTH="100%" BGCOLOR="#FFF0D0"><FONT COLOR="#000000">
<B>Your <MM-List-Name> Password</B>
</FONT></TD></TR>
<tr valign="TOP"><td WIDTH="50%">
<a name=reminder>
<center>
<h3>Forgotten Your Password?</h3>
</center>
Click this button to have your password emailed to your
membership address.
<p><MM-Umbrella-Notice>
<center>
<MM-Email-My-Pw>
</center>
</td>
<td WIDTH="50%">
<a name=changepw>
<center>
<h3>Change Your Password</h3>
<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="2" WIDTH="70%" COLS=2>
<TR><TD BGCOLOR="#dddddd"><div align="right">New
password:</div></TD>
<TD><MM-New-Pass-Box></TD>
</TR>
<TR>
<TD BGCOLOR="#dddddd"><div align="right">Again to
confirm:</div></TD>
<TD><MM-Confirm-Pass-Box></TD>
</TR>
</table>
<MM-Change-Pass-Button>
<p><center><mm-global-pw-changes-button>Change globally.
</center>
</TABLE>
<p>
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="5">
<TR><TD WIDTH="100%" BGCOLOR="#FFF0D0"><FONT COLOR="#000000">
<B>Your <MM-List-Name> Subscription Options</B>
</FONT></TD></TR>
</table>
<p>
<i><strong>Current values are checked.</strong></i>
<p>Note that some of the options have a <em>Set globally</em>
checkbox. Checking this field will cause the changes to be made to
every mailing list that you are a member of on <mm-host>. Click on
<em>List my other subscriptions</em> above to see which other mailing
lists you are subscribed to.
<p>
<TABLE BORDER="0" CELLSPACING="3" CELLPADDING="4" WIDTH="100%">
<tr><TD BGCOLOR="#cccccc">
<a name="disable">
<strong>Mail delivery</strong></a><p>
Set this option to <em>Enabled</em> to receive messages posted
to this mailing list. Set it to <em>Disabled</em> if you want
to stay subscribed, but don't want mail delivered to you for a
while (e.g. you're going on vacation). If you disable mail
delivery, don't forget to re-enable it when you come back; it
will not be automatically re-enabled.
</td><td bgcolor="#cccccc">
<mm-delivery-enable-button>Enabled<br>
<mm-delivery-disable-button>Disabled<p>
<mm-global-deliver-button><i>Set globally</i>
</td></tr>
<tr><TD BGCOLOR="#cccccc">
<strong>Set Digest Mode</strong><p>
If you turn digest mode on, you'll get posts bundled together
(usually one per day but possibly more on busy lists), instead
of singly when they're sent. If digest mode is changed from
on to off, you may receive one last digest.
</td><td bgcolor="#cccccc">
<MM-Undigest-Radio-Button>Off<br>
<MM-Digest-Radio-Button>On
</td></tr>
<tr><TD BGCOLOR="#cccccc">
<strong>Get MIME or Plain Text Digests?</strong><p>
Your mail reader may or may not support MIME digests. In
general MIME digests are preferred, but if you have a problem
reading them, select plain text digests.
</td><td bgcolor="#cccccc">
<MM-Mime-Digests-Button>MIME<br>
<MM-Plain-Digests-Button>Plain Text<p>
<mm-global-mime-button><i>Set globally</i>
</td></tr>
<tr><TD BGCOLOR="#cccccc">
<strong>Receive your own posts to the list?</strong><p>
Ordinarily, you will get a copy of every message you post to
the list. If you don't want to receive this copy, set this
option to <em>No</em>.
</td><td bgcolor="#cccccc">
<mm-dont-receive-own-mail-button>No<br>
<mm-receive-own-mail-button>Yes
</td></tr>
<tr><TD BGCOLOR="#cccccc">
<strong>Receive acknowledgement mail when you send mail to
the list?</strong><p>
</td><td bgcolor="#cccccc">
<mm-dont-ack-posts-button>No<br>
<mm-ack-posts-button>Yes
</td></tr>
<tr><td bgcolor="#cccccc">
<strong>Get password reminder email for this list?</strong><p>
Once a month, you will get an email containing a password
reminder for every list at this host to which you are
subscribed. You can turn this off on a per-list basis by
selecting <em>No</em> for this option. If you turn off
password reminders for all the lists you are subscribed to, no
reminder email will be sent to you.
</td><td bgcolor="#cccccc">
<mm-dont-get-password-reminder-button>No<br>
<mm-get-password-reminder-button>Yes<p>
<mm-global-remind-button><i>Set globally</i>
</td></tr>
<tr><TD BGCOLOR="#cccccc">
<strong>Conceal yourself from subscriber list?</strong><p>
When someone views the list membership, your email address is
normally shown (in an obscured fashion to thwart spam
harvesters). If you do not want your email address to show up
on this membership roster at all, select <em>Yes</em> for this option.
</td><td bgcolor="#cccccc">
<MM-Public-Subscription-Button>No<br>
<MM-Hide-Subscription-Button>Yes
</td></tr>
<tr><TD BGCOLOR="#cccccc">
<strong>What language do you prefer?</strong><p>
</td><td bgcolor="#cccccc">
<MM-list-langs>
</td></tr>
<tr><td bgcolor="#cccccc">
<strong>Which topic categories would you like to subscribe
to?</strong><p>
By selecting one or more topics, you can filter the
traffic on the mailing list, so as to receive only a
subset of the messages. If a message matches one of
your selected topics, then you will get the message,
otherwise you will not.
<p>If a message does not match any topic, the delivery
rule depends on the setting of the option below. If
you do not select any topics of interest, you will get
all the messages sent to the mailing list.
</td><td bgcolor="#cccccc">
<mm-topics>
</td></tr>
<tr><td bgcolor="#cccccc">
<strong>Do you want to receive messages that do not match any
topic filter?</strong><p>
This option only takes effect if you've subscribed to
at least one topic above. It describes what the
default delivery rule is for messages that don't match
any topic filter. Selecting <em>No</em> says that if
the message does not match any topic filters, then you
won't get the message, while selecting <em>Yes</em>
says to deliver such non-matching messages to you.
<p>If no topics of interest are selected above, then
you will receive every message sent to the mailing
list.
</td><td bgcolor="#cccccc">
<mm-suppress-nonmatching-topics>No<br>
<mm-receive-nonmatching-topics>Yes
</td></tr>
<tr><td bgcolor="#cccccc">
<strong>Avoid duplicate copies of messages?</strong><p>
When you are listed explicitly in the <tt>To:</tt> or
<tt>Cc:</tt> headers of a list message, you can opt to
not receive another copy from the mailing list.
Select <em>Yes</em> to avoid receiving copies from the
mailing list; select <em>No</em> to receive copies.
<p>If the list has member personalized messages
enabled, and you elect to receive copies, every copy
will have a <tt>X-Mailman-Copy: yes</tt> header added
to it.
</td><td bgcolor="#cccccc">
<mm-receive-duplicates-button>No<br>
<mm-dont-receive-duplicates-button>Yes<p>
<mm-global-nodupes-button><i>Set globally</i>
</td></tr>
<tr><TD colspan="2">
<center><MM-options-Submit-button></center>
</td></tr>
</table>
</center>
<p>
<MM-Form-End>
<div class="container">
<MM-Mailman-Footer>
<hr />
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,8 @@
Your message entitled
%(subject)s
was successfully received by the %(listname)s mailing list.
List info page: %(listinfo_url)s
Your preferences: %(optionsurl)s

View File

@ -0,0 +1,13 @@
As list administrator, your authorization is requested for the
following mailing list posting:
List: %(listname)s@%(hostname)s
From: %(sender)s
Subject: %(subject)s
Reason: %(reason)s
At your convenience, visit:
%(admindb_url)s
to approve or deny the request.

View File

@ -0,0 +1,15 @@
Your mail to '%(listname)s' with the subject
%(subject)s
Is being held until the list moderator can review it for approval.
The reason it is being held:
%(reason)s
Either the message will get posted to the list, or you will receive
notification of the moderator's decision. If you would like to cancel
this posting, please visit the following URL:
%(confirmurl)s

View File

@ -0,0 +1,44 @@
<html>
<head>
<title>%(realname)s Private Archives Authentication</title>
<script>function sf(){document.f.username.focus();}</script>
</head>
<body bgcolor="#ffffff" onLoad="sf()">
<FORM METHOD=POST ACTION="%(action)s" name="f">
%(message)s
<TABLE WIDTH="100%%" BORDER="0" CELLSPACING="4" CELLPADDING="5">
<TR>
<TD COLSPAN="2" WIDTH="100%%" BGCOLOR="#99CCFF" ALIGN="CENTER">
<B><FONT COLOR="#000000" SIZE="+1">%(realname)s Private
Archives Authentication</FONT></B>
</TD>
</TR>
<tr>
<TD><div ALIGN="Right">Email address:</div></TD>
<TD><INPUT TYPE="text" NAME="username" SIZE="30"></TD>
</tr>
<tr>
<TD><div ALIGN="Right">Password:</div></TD>
<TD><INPUT TYPE="password" NAME="password" SIZE="30"></TD>
</tr>
<tr>
<td colspan=2 align="middle"><INPUT type="SUBMIT"
name="submit"
value="Let me in...">
</td>
</tr>
</TABLE>
<p><strong><em>Important:</em></strong> From this point on, you
must have cookies enabled in your browser, otherwise
you will have to re-authenticate with every operation.
<p>Session cookies are used in Mailman's
private archive interface so that you don't need to
re-authenticate with every operation. This
cookie will expire automatically when you exit your browser, or
you can explicitly expire the cookie by visiting your
member options page and clicking the
<em>Log out</em> button.
</FORM>
</body>
</html>

View File

@ -0,0 +1,25 @@
This is a probe message. You can ignore this message.
The %(listname)s mailing list has received a number of bounces from you,
indicating that there may be a problem delivering messages to %(address)s.
A bounce sample is attached below. Please examine this message to make sure
there are no problems with your email address. You may want to check with
your mail administrator for more help.
If you are reading this, you don't need to do anything to remain an enabled
member of the mailing list. If this message had bounced, you would not be
reading it, and your membership would have been disabled. Normally when you
are disabled, you receive occasional messages asking you to re-enable your
subscription.
You can also visit your membership page at
%(optionsurl)s
On your membership page, you can change various delivery options such
as your email address and whether you get digests or not.
If you have any questions or problems, you can contact the list owner
at
%(owneraddr)s

View File

@ -0,0 +1,13 @@
Your request to the %(listname)s mailing list
%(request)s
has been rejected by the list moderator. The moderator gave the
following reason for rejecting your request:
"%(reason)s"
Any questions or comments should be directed to the list administrator
at:
%(adminaddr)s

View File

@ -0,0 +1,160 @@
<!-- $Revision: 3394 $ -->
<HTML>
<HEAD>
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<TITLE>OpenStack Open Source Cloud Computing Software &raquo; <MM-List-Name> Subscribers</TITLE>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<P>
<TABLE WIDTH="100%" COLS="1" BORDER="0" CELLSPACING="4" CELLPADDING="5">
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#D8D8D8" ALIGN="CENTER">
<B><FONT COLOR="#000000" SIZE="+1"><MM-List-Name>
Subscribers</FONT></B>
</TD>
</TR>
<TR>
<TD COLSPAN="2" WIDTH="100%" ALIGN="CENTER">
<P align = "right"> <MM-lang-form-start><MM-displang-box>
<MM-list-langs><MM-form-end></p>
<P>Click on your address to visit your subscription
options page.<br><I>(Parenthesized entries have list delivery
disabled.)</I></P>
</TD>
</TR>
<TR WIDTH="100%" VALIGN="top">
<TD BGCOLOR="#B6D8E2" WIDTH="50%">
<center>
<B><FONT COLOR="#000000"><MM-Num-Reg-Users>
Non-digested Members of <MM-List-Name>:</FONT></B>
</center>
</TD>
<TD BGCOLOR="#B6D8E2" WIDTH="50%">
<center>
<B><FONT COLOR="#000000"><MM-Num-Digesters> Digested
Members of <MM-List-Name>:</FONT></B>
</center>
</TD>
</TR>
<TR VALIGN="top">
<td>
<P><MM-Regular-Users>
</td>
<td>
<P><MM-Digest-Users>
</td>
</tr>
</table>
<div class="container">
<MM-Mailman-Footer>
<hr />
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</BODY>
</HTML>

View File

@ -0,0 +1,11 @@
Your authorization is required for a mailing list subscription request
approval:
For: %(username)s
List: %(listname)s@%(hostname)s
At your convenience, visit:
%(admindb_url)s
to process the request.

View File

@ -0,0 +1,117 @@
<!-- $Revision: 3550 $ -->
<html>
<head><title>OpenStack Open Source Cloud Computing Software &raquo; <MM-List-Name> Subscription results</title></head>
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<h1><MM-List-Name> Subscription results</h1>
<MM-Results>
<div class="container">
<MM-Mailman-Footer>
<hr />
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,33 @@
Welcome to the %(real_name)s@%(host_name)s mailing list!
%(welcome)s
To post to this list, send your email to:
%(emailaddr)s
General information about the mailing list is at:
%(listinfo_url)s
If you ever want to unsubscribe or change your options (eg, switch to or
from digest mode, change your password, etc.), visit your subscription
page at:
%(optionsurl)s
%(umbrella)s
You can also make such adjustments via email by sending a message to:
%(real_name)s-request@%(host_name)s
with the word `help' in the subject or body (don't include the
quotes), and you will get back a message with instructions.
You must know your password to change your options (including changing
the password, itself) or to unsubscribe. It is:
%(password)s
Normally, Mailman will remind you of your %(host_name)s mailing list
passwords once every month, although you can disable this if you
prefer. This reminder will also include instructions on how to
unsubscribe or change your account options. There is also a button on
your options page that will email your current password to you.

View File

@ -0,0 +1,23 @@
Mailing list removal confirmation notice for mailing list %(listname)s
We have received a request%(remote)s for the removal of your email
address, "%(email)s" from the %(listaddr)s mailing list. To confirm
that you want to be removed from this mailing list, simply reply to
this message, keeping the Subject: header intact. Or visit this web
page:
%(confirmurl)s
Or include the following line -- and only the following line -- in a
message to %(requestaddr)s:
confirm %(cookie)s
Note that simply sending a `reply' to this message should work from
most mail readers, since that usually leaves the Subject: line in
the right form (additional "Re:" text in the Subject: is okay).
If you do not wish to be removed from this list, please simply
disregard this message. If you think you are being maliciously
removed from the list, or have any other questions, send them to
%(listadmin)s.

View File

@ -0,0 +1,11 @@
Your authorization is required for a mailing list unsubscription
request approval:
By: %(username)s
From: %(listname)s@%(hostname)s
At your convenience, visit:
%(admindb_url)s
to process the request.

View File

@ -0,0 +1,24 @@
You, or someone posing as you, has requested a password reminder for
your membership on the mailing list %(fqdn_lname)s. You will need
this password in order to change your membership options (e.g. do you
want regular delivery or digest delivery), and having this password
makes it easier for you to unsubscribe from the mailing list.
You are subscribed with the address: %(user)s
Your %(listname)s password is: %(password)s
To make changes to your membership options, log in and visit your
options web page:
%(options_url)s
You can also make such changes via email by sending a message to:
%(requestaddr)s
with the text "help" in the subject or body. The automatic reply will
contain more detailed instructions.
Questions or comments? Please send them to the %(listname)s mailing
list administrator at %(owneraddr)s.

View File

@ -0,0 +1,22 @@
Mailing list subscription confirmation notice for mailing list %(listname)s
We have received a request%(remote)s for subscription of your email
address, "%(email)s", to the %(listaddr)s mailing list. To confirm
that you want to be added to this mailing list, simply reply to this
message, keeping the Subject: header intact. Or visit this web page:
%(confirmurl)s
Or include the following line -- and only the following line -- in a
message to %(requestaddr)s:
confirm %(cookie)s
Note that simply sending a `reply' to this message should work from
most mail readers, since that usually leaves the Subject: line in
the right form (additional "Re:" text in the Subject: is okay).
If you do not wish to be subscribed to this list, please simply
disregard this message. If you think you are being maliciously
subscribed to the list, or have any other questions, send them to
%(listadmin)s.

View File

@ -0,0 +1,4 @@
- name: mailman site reload apache2
service:
name: apache2
state: reloaded

View File

@ -0,0 +1,108 @@
- name: Set mailman site root fact
set_fact:
mm_site_root: "/srv/mailman/{{ mailman_site.name }}"
cacheable: no
- name: Create mm site dirs
file:
path: "{{ inner_site_dir }}"
state: directory
owner: list
group: list
mode: '2775'
loop:
- "{{ mm_site_root }}/"
- "{{ mm_site_root }}/etc"
- "{{ mm_site_root }}/lists"
- "{{ mm_site_root }}/logs"
- "{{ mm_site_root }}/locks"
- "{{ mm_site_root }}/data"
- "{{ mm_site_root }}/spam"
- "{{ mm_site_root }}/mail"
- "{{ mm_site_root }}/run"
- "{{ mm_site_root }}/archives"
- "{{ mm_site_root }}/archives/public"
- "{{ mm_site_root }}/archives/private"
- "{{ mm_site_root }}/templates"
- "{{ mm_site_root }}/qfiles"
- "{{ mm_site_root }}/qfiles/in"
- "{{ mm_site_root }}/qfiles/out"
- "{{ mm_site_root }}/qfiles/commands"
- "{{ mm_site_root }}/qfiles/bounces"
- "{{ mm_site_root }}/qfiles/news"
- "{{ mm_site_root }}/qfiles/archive"
- "{{ mm_site_root }}/qfiles/shunt"
- "{{ mm_site_root }}/qfiles/virgin"
- "{{ mm_site_root }}/qfiles/bad"
- "{{ mm_site_root }}/qfiles/retry"
- "{{ mm_site_root }}/qfiles/maildir"
loop_control:
loop_var: inner_site_dir
- name: Link html templates into site
file:
state: link
src: "/usr/share/mailman/{{ site_language }}"
dest: "{{ mm_site_root }}/templates/{{ site_language }}"
owner: root
group: root
loop: "{{ mailman_site.install_languages }}"
loop_control:
loop_var: site_language
- name: Create openstack specific en templates dir
file:
state: directory
path: /srv/mailman/openstack/templates/en
owner: root
group: list
mode: '0755'
when: mailman_site.name == "openstack"
- name: Copy openstack specific en templates into site
synchronize:
src: openstack/html-templates-en/
dest: /srv/mailman/openstack/templates/en
when: mailman_site.name == "openstack"
- name: Create site specific config
template:
src: mm_site_cfg.py.j2
dest: "{{ mm_site_root }}/etc/mm_cfg_local.py"
owner: root
group: root
mode: '0444'
- name: Create normal mailman vhost config
template:
src: mailman_multihost.vhost.j2
dest: "/etc/apache2/sites-enabled/50-{{ mailman_site.listdomain }}.conf"
owner: root
group: root
mode: '0644'
notify: mailman site reload apache2
- name: Create site init script
template:
src: mailman.init.j2
dest: "/etc/init.d/mailman-{{ mailman_site.name }}"
owner: root
group: root
mode: '0755'
- name: Enable mailman site service
service:
name: "mailman-{{ mailman_site.name }}"
enabled: yes
- name: Create mailman site lists
include_role:
name: mailman-list
vars:
mm_site_name: "{{ mailman_site.name }}"
mm_list_name: "{{ site_list.name }}"
mm_list_description: "{{ site_list.description }}"
mm_list_admin: "{{ site_list.admin }}"
mm_list_password: "{{ site_list.password }}"
loop: "{{ mailman_site.lists }}"
loop_control:
loop_var: site_list

View File

@ -0,0 +1,116 @@
#! /bin/sh
#
# mailman-{{ mailman_site.name }} starts up the master queue runner for mailman
#
# Based on skeleton originally by Miquel van Smoorenburg and Ian Murdock,
# customisations by Tollef Fog Heen and Thijs Kinkhorst for Debian.
#
### BEGIN INIT INFO
# Provides: mailman-qrunner-{{ mailman_site.name }}
# Required-Start: $syslog $local_fs $remote_fs $named $network
# Required-Stop: $syslog $local_fs $remote_fs $named $network
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Mailman Master Queue Runner
# Description: Starts and stops the Mailman queue runners, used to
# manage the various message queues within the Mailman
# mailing list manager.
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/lib/mailman/bin/mailmanctl
export MAILMAN_SITE_DIR=/srv/mailman/{{ mailman_site.name }}
PIDFILE=$MAILMAN_SITE_DIR/run/mailman.pid
test -x $DAEMON || exit 0
set -e
if ! [ -d /var/run/mailman ]; then
install -d -o list -g list /var/run/mailman
fi
if ! [ -d /var/lock/mailman ]; then
install -d -o root -g list -m 2775 /var/lock/mailman
fi
. /lib/lsb/init-functions
# In rare upgrading cycles python might not be available at some point.
# Do not break the upgrade in that case.
if ! [ -x /usr/bin/python ]; then
log_warning_msg "Python interpreter not available, exiting."
exit 0;
fi
# Just a newline.
nl='
'
case "$1" in
start)
SITE_LIST=$( sed -rne "s/^[[:space:]]*MAILMAN_SITE_LIST[[:space:]]*=[[:space:]]*(['\"])([^'\"]+)\\1/\\2/p" /etc/mailman/mm_cfg.py )
[ -n "$SITE_LIST" ] || SITE_LIST='mailman'
case "$nl$(/var/lib/mailman/bin/list_lists -b)$nl" in
(*$nl$SITE_LIST$nl*) ;;
(*)
log_warning_msg "Site list for mailman missing (looking for list named '${SITE_LIST}')."
log_warning_msg "Please create it; until then, mailman will refuse to start."
exit 0 ;;
esac
log_daemon_msg "Starting Mailman master qrunner" "mailmanctl"
if $DAEMON -s -q start; then
log_end_msg 0
else
log_end_msg 1
fi
;;
stop)
log_daemon_msg "Stopping Mailman master qrunner" "mailmanctl"
if $DAEMON -q stop; then
rm -f $PIDFILE
log_end_msg 0
else
log_end_msg 1
fi
;;
reload)
log_begin_msg "Reloading Mailman master qrunner configuration"
if $DAEMON -q restart; then
log_end_msg 0
else
log_end_msg 1
fi
;;
restart|force-reload)
PID=`cat $PIDFILE 2>/dev/null` || true
log_daemon_msg "Restarting Mailman master qrunner" "mailmanctl"
$DAEMON -q stop
if test -n "$PID" && kill -0 $PID 2>/dev/null ; then
log_action_begin_msg "Waiting"
for cnt in `seq 1 5`; do
sleep 1
kill -0 $PID 2>/dev/null || break
done;
if kill -0 $PID 2>/dev/null ; then
log_action_end_msg 1
else
log_action_end_msg 0
fi
fi
if $DAEMON -q start; then
log_end_msg 0
else
log_end_msg 1
fi
;;
*)
echo "Usage: /etc/init.d/mailman {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0

View File

@ -0,0 +1,62 @@
<VirtualHost *:80>
ServerName {{ mailman_site.listdomain }}
ErrorLog ${APACHE_LOG_DIR}/{{ mailman_site.listdomain }}-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/{{ mailman_site.listdomain }}-access.log combined
DocumentRoot /var/www
RewriteEngine on
RewriteRule ^/$ /cgi-bin/mailman/listinfo [R]
# We can find mailman here:
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
# And the public archives:
Alias /pipermail/ /srv/mailman/{{ mailman_site.name }}/archives/public/
# Logos:
Alias /images/mailman/ /usr/share/images/mailman/
# Use this if you don't want the "cgi-bin" component in your URL:
# In case you want to access mailman through a shorter URL you should enable
# this:
#ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
# In this case you need to set the DEFAULT_URL_PATTERN in
# /etc/mailman/mm_cfg.py to http://%s/mailman/ for the cookie
# authentication code to work. Note that you need to change the base
# URL for all the already-created lists as well.
<Directory /usr/lib/cgi-bin/mailman/>
AllowOverride None
Options ExecCGI
AddHandler cgi-script .cgi
SetEnv MAILMAN_SITE_DIR /srv/mailman/{{ mailman_site.name }}
Order allow,deny
Allow from all
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
<Directory /srv/mailman/{{ mailman_site.name }}/archives/public/>
Options FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
<Directory /usr/share/images/mailman/>
AllowOverride None
Order allow,deny
Allow from all
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
</VirtualHost>

View File

@ -0,0 +1,153 @@
# -*- python -*-
# Copyright (C) 1998,1999,2000 by the Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
"""This is the module which takes your site-specific settings.
From a raw distribution it should be copied to mm_cfg.py. If you
already have an mm_cfg.py, be careful to add in only the new settings
you want. The complete set of distributed defaults, with annotation,
are in ./Defaults. In mm_cfg, override only those you want to
change, after the
from Defaults import *
line (see below).
Note that these are just default settings - many can be overridden via the
admin and user interfaces on a per-list or per-user basis.
Note also that some of the settings are resolved against the active list
setting by using the value as a format string against the
list-instance-object's dictionary - see the distributed value of
DEFAULT_MSG_FOOTER for an example."""
#######################################################
# Here's where we get the distributed defaults. #
from Mailman.Defaults import *
##############################################################
# Put YOUR site-specific configuration below, in mm_cfg.py . #
# See Defaults.py for explanations of the values. #
#-------------------------------------------------------------
# The name of the list Mailman uses to send password reminders
# and similar. Don't change if you want mailman-owner to be
# a valid local part.
MAILMAN_SITE_LIST = 'mailman'
#-------------------------------------------------------------
# If you change these, you have to configure your http server
# accordingly (Alias and ScriptAlias directives in most httpds)
DEFAULT_URL_PATTERN = 'http://%s/cgi-bin/mailman/'
PRIVATE_ARCHIVE_URL = '/cgi-bin/mailman/private'
IMAGE_LOGOS = '/images/mailman/'
#-------------------------------------------------------------
# Default domain for email addresses of newly created MLs
DEFAULT_EMAIL_HOST = '{{ mailman_site.listdomain }}'
#-------------------------------------------------------------
# Default host for web interface of newly created MLs
DEFAULT_URL_HOST = '{{ mailman_site.listdomain }}'
#-------------------------------------------------------------
# Required when setting any of its arguments.
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
#-------------------------------------------------------------
# The default language for this server.
DEFAULT_SERVER_LANGUAGE = 'en'
#-------------------------------------------------------------
# Iirc this was used in pre 2.1, leave it for now
USE_ENVELOPE_SENDER = 0 # Still used?
#-------------------------------------------------------------
# Unset send_reminders on newly created lists
DEFAULT_SEND_REMINDERS = 0
#-------------------------------------------------------------
# Uncomment this if you configured your MTA such that it
# automatically recognizes newly created lists.
# (see /usr/share/doc/mailman/README.Exim4.Debian or
# /usr/share/mailman/postfix-to-mailman.py)
MTA=None # Misnomer, suppresses alias output on newlist
#-------------------------------------------------------------
# Uncomment if you use Postfix virtual domains (but not
# postfix-to-mailman.py), but be sure to see
# /usr/share/doc/mailman/README.Debian first.
# MTA='Postfix'
#-------------------------------------------------------------
# Uncomment if you want to filter mail with SpamAssassin. For
# more information please visit this website:
# http://www.jamesh.id.au/articles/mailman-spamassassin/
# GLOBAL_PIPELINE.insert(1, 'SpamAssassin')
# Note - if you're looking for something that is imported from mm_cfg, but you
# didn't find it above, it's probably in /usr/lib/mailman/Mailman/Defaults.py.
# Enable VERP, but let Exim create the VERP addresses since it's
# more efficient. --jeblair
VERP_PASSWORD_REMINDERS = 1
VERP_PERSONALIZED_DELIVERIES = 1
VERP_CONFIRMATIONS = 1
VERP_DELIVERY_INTERVAL = 0
# Make membership viewable by admin only by default (lp bug 1021493)
# Private_roster == 0: anyone can see, 1: members only, 2: admin only.
DEFAULT_PRIVATE_ROSTER = 2
# All `normal' messages which are delivered to the entire list membership go
# through this pipeline of handler modules. Lists themselves can override the
# global pipeline by defining a `pipeline' attribute.
# AvoidDuplicates is removed because it modifies the CC header, which
# can break DKIM signatures. --jeblair
GLOBAL_PIPELINE = [
# These are the modules that do tasks common to all delivery paths.
'SpamDetect',
'Approve',
'Replybot',
'Moderate',
'Hold',
'MimeDel',
'Scrubber',
'Emergency',
'Tagger',
'CalcRecips',
'Cleanse',
'CleanseDKIM',
'CookHeaders',
# And now we send the message to the digest mbox file, and to the arch and
# news queues. Runners will provide further processing of the message,
# specific to those delivery paths.
'ToDigest',
'ToArchive',
'ToUsenet',
# Now we'll do a few extra things specific to the member delivery
# (outgoing) path, finally leaving the message in the outgoing queue.
'AfterDelivery',
'Acknowledge',
'WrapMessage',
'ToOutgoing',
]

View File

@ -0,0 +1 @@
Role to configure mailman

View File

@ -0,0 +1,4 @@
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

View File

@ -0,0 +1,9 @@
#!/bin/sh
for site in `cut -d: -f1 /etc/mailman/sites | sort`; do
echo "$site:"
dir=`grep ^${site}: /etc/mailman/sites | cut -d' ' -f2`
for ml in `ls ${dir}/archives/public/ | sort`; do
echo " - $ml"
done
done

View File

@ -0,0 +1,45 @@
import os
import sys
if 'MAILMAN_SITE_DIR' not in os.environ:
print("Please set MAILMAN_SITE_DIR")
# Exit 0 to avoid confusing the dpkg scripts
sys.exit(0)
sys.path.insert(0, os.path.join(os.environ['MAILMAN_SITE_DIR'], 'etc'))
from mm_cfg_local import *
VAR_PREFIX = os.environ['MAILMAN_SITE_DIR']
# Useful directories
LIST_DATA_DIR = os.path.join(VAR_PREFIX, 'lists')
LOG_DIR = os.path.join(VAR_PREFIX, 'logs')
LOCK_DIR = os.path.join(VAR_PREFIX, 'locks')
DATA_DIR = os.path.join(VAR_PREFIX, 'data')
SPAM_DIR = os.path.join(VAR_PREFIX, 'spam')
WRAPPER_DIR = os.path.join(EXEC_PREFIX, 'mail')
BIN_DIR = os.path.join(PREFIX, 'bin')
SCRIPTS_DIR = os.path.join(PREFIX, 'scripts')
TEMPLATE_DIR = os.path.join(VAR_PREFIX, 'templates')
MESSAGES_DIR = os.path.join(PREFIX, 'messages')
PUBLIC_ARCHIVE_FILE_DIR = os.path.join(VAR_PREFIX, 'archives', 'public')
PRIVATE_ARCHIVE_FILE_DIR = os.path.join(VAR_PREFIX, 'archives', 'private')
# Directories used by the qrunner subsystem
QUEUE_DIR = os.path.join(VAR_PREFIX, 'qfiles')
INQUEUE_DIR = os.path.join(QUEUE_DIR, 'in')
OUTQUEUE_DIR = os.path.join(QUEUE_DIR, 'out')
CMDQUEUE_DIR = os.path.join(QUEUE_DIR, 'commands')
BOUNCEQUEUE_DIR = os.path.join(QUEUE_DIR, 'bounces')
NEWSQUEUE_DIR = os.path.join(QUEUE_DIR, 'news')
ARCHQUEUE_DIR = os.path.join(QUEUE_DIR, 'archive')
SHUNTQUEUE_DIR = os.path.join(QUEUE_DIR, 'shunt')
VIRGINQUEUE_DIR = os.path.join(QUEUE_DIR, 'virgin')
BADQUEUE_DIR = os.path.join(QUEUE_DIR, 'bad')
RETRYQUEUE_DIR = os.path.join(QUEUE_DIR, 'retry')
MAILDIR_DIR = os.path.join(QUEUE_DIR, 'maildir')
# Other useful files
PIDFILE = os.path.join(VAR_PREFIX, 'run', 'mailman.pid')
SITE_PW_FILE = os.path.join(DATA_DIR, 'adm.pw')
LISTCREATOR_PW_FILE = os.path.join(DATA_DIR, 'creator.pw')

View File

@ -0,0 +1,2 @@
User-agent: SemrushBot
Disallow: /

View File

@ -0,0 +1,9 @@
- name: mailman restart apache2
service:
name: apache2
state: restarted
- name: mailman reload apache2
service:
name: apache2
state: reloaded

View File

@ -0,0 +1,128 @@
- name: Install apache2
package:
name:
- apache2
- apache2-utils
state: present
- name: Apache modules
apache2_module:
state: present
name: "{{ a2_mod }}"
loop:
- rewrite
- cgid
- ssl
loop_control:
loop_var: a2_mod
notify: mailman restart apache2
- name: Install mailman
package:
name:
- mailman
state: present
# Install index.html, robots.txt
- name: Install mailman index.html
copy:
src: index.html
dest: /var/www/index.html
owner: root
group: root
mode: '0444'
- name: Install mailman robots.txt
copy:
src: robots.txt
dest: /var/www/robots.txt
owner: root
group: root
mode: '0444'
- name: multihost mailman configs
block:
- name: Create multihost dir
file:
path: /srv/mailman
state: directory
owner: root
group: root
mode: '0755'
- name: Install multihost mailman config
copy:
src: mm_cfg_multihost.py
dest: /etc/mailman/mm_cfg.py
owner: root
group: root
mode: '0444'
- name: Install mailman mk-archives-index
copy:
src: mk-archives-index
dest: /usr/local/sbin/mk-archives-index
owner: root
group: root
mode: '0744'
- name: Set cron PATH for mk-archives-index
cron:
name: PATH
env: yes
job: /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
- name: Enable mk-archives-index cron
cron:
name: "mk-archives-index cron"
state: present
job: mk-archives-index > /var/www/archives.yaml
minute: "0"
hour: "0"
- name: Create mm sites file
template:
src: sites.j2
dest: /etc/mailman/sites
owner: root
group: root
mode: '0444'
- name: Create mailman sites and lists
include_role:
name: mailman-site
vars:
mailman_site: "{{ site }}"
loop: "{{ mailman_sites }}"
loop_control:
loop_var: site
when: mailman_multihost
- name: normal mailman configs
block:
- name: Install normal mailman config
template:
src: mm_cfg.py.j2
dest: /etc/mailman/mm_cfg.py
owner: root
group: root
mode: '0444'
- name: Create normal mailman vhost config
template:
src: mailman.vhost.j2
dest: "/etc/apache2/sites-enabled/50-{{ mailman_listdomain }}.conf"
owner: root
group: root
mode: '0644'
notify: mailman reload apache2
- name: Enable mailman site service
service:
name: "mailman"
enabled: yes
- name: Create mailman site lists
include_role:
name: mailman-list
vars:
mm_site_name: "_default"
mm_list_name: "{{ list.name }}"
mm_list_description: "{{ list.description }}"
mm_list_admin: "{{ list.admin }}"
mm_list_password: "{{ list.password }}"
loop: "{{ mailman_lists }}"
loop_control:
loop_var: list
when: not mailman_multihost

View File

@ -0,0 +1,61 @@
<VirtualHost *:80>
ServerName {{ mailman_listdomain }}
ErrorLog ${APACHE_LOG_DIR}/{{ mailman_listdomain }}-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/{{ mailman_listdomain }}-access.log combined
DocumentRoot /var/www
RewriteEngine on
RewriteRule ^/$ /cgi-bin/mailman/listinfo [R]
# We can find mailman here:
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
# And the public archives:
Alias /pipermail/ /var/lib/mailman/archives/public/
# Logos:
Alias /images/mailman/ /usr/share/images/mailman/
# Use this if you don't want the "cgi-bin" component in your URL:
# In case you want to access mailman through a shorter URL you should enable
# this:
#ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
# In this case you need to set the DEFAULT_URL_PATTERN in
# /etc/mailman/mm_cfg.py to http://%s/mailman/ for the cookie
# authentication code to work. Note that you need to change the base
# URL for all the already-created lists as well.
<Directory /usr/lib/cgi-bin/mailman/>
AllowOverride None
Options ExecCGI
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
<Directory /var/lib/mailman/archives/public/>
Options FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
<Directory /usr/share/images/mailman/>
AllowOverride None
Order allow,deny
Allow from all
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
</VirtualHost>

View File

@ -0,0 +1,119 @@
# -*- python -*-
# Copyright (C) 1998,1999,2000 by the Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
"""This is the module which takes your site-specific settings.
From a raw distribution it should be copied to mm_cfg.py. If you
already have an mm_cfg.py, be careful to add in only the new settings
you want. The complete set of distributed defaults, with annotation,
are in ./Defaults. In mm_cfg, override only those you want to
change, after the
from Defaults import *
line (see below).
Note that these are just default settings - many can be overridden via the
admin and user interfaces on a per-list or per-user basis.
Note also that some of the settings are resolved against the active list
setting by using the value as a format string against the
list-instance-object's dictionary - see the distributed value of
DEFAULT_MSG_FOOTER for an example."""
#######################################################
# Here's where we get the distributed defaults. #
from Defaults import *
##############################################################
# Put YOUR site-specific configuration below, in mm_cfg.py . #
# See Defaults.py for explanations of the values. #
#-------------------------------------------------------------
# The name of the list Mailman uses to send password reminders
# and similar. Don't change if you want mailman-owner to be
# a valid local part.
MAILMAN_SITE_LIST = 'mailman'
#-------------------------------------------------------------
# If you change these, you have to configure your http server
# accordingly (Alias and ScriptAlias directives in most httpds)
DEFAULT_URL_PATTERN = 'http://%s/cgi-bin/mailman/'
PRIVATE_ARCHIVE_URL = '/cgi-bin/mailman/private'
IMAGE_LOGOS = '/images/mailman/'
#-------------------------------------------------------------
# Default domain for email addresses of newly created MLs
DEFAULT_EMAIL_HOST = '{{ mailman_listdomain }}'
#-------------------------------------------------------------
# Default host for web interface of newly created MLs
DEFAULT_URL_HOST = '{{ mailman_listdomain }}'
#-------------------------------------------------------------
# Required when setting any of its arguments.
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
#-------------------------------------------------------------
# The default language for this server.
DEFAULT_SERVER_LANGUAGE = 'en'
#-------------------------------------------------------------
# Iirc this was used in pre 2.1, leave it for now
USE_ENVELOPE_SENDER = 0 # Still used?
#-------------------------------------------------------------
# Unset send_reminders on newly created lists
DEFAULT_SEND_REMINDERS = 0
#-------------------------------------------------------------
# Uncomment this if you configured your MTA such that it
# automatically recognizes newly created lists.
# (see /usr/share/doc/mailman/README.Exim4.Debian or
# /usr/share/mailman/postfix-to-mailman.py)
MTA=None # Misnomer, suppresses alias output on newlist
#-------------------------------------------------------------
# Uncomment if you use Postfix virtual domains (but not
# postfix-to-mailman.py), but be sure to see
# /usr/share/doc/mailman/README.Debian first.
# MTA='Postfix'
#-------------------------------------------------------------
# Uncomment if you want to filter mail with SpamAssassin. For
# more information please visit this website:
# http://www.jamesh.id.au/articles/mailman-spamassassin/
# GLOBAL_PIPELINE.insert(1, 'SpamAssassin')
# Note - if you're looking for something that is imported from mm_cfg, but you
# didn't find it above, it's probably in /usr/lib/mailman/Mailman/Defaults.py.
# Enable VERP, but let Exim create the VERP addresses since it's
# more efficient. --jeblair
VERP_PASSWORD_REMINDERS = 1
VERP_PERSONALIZED_DELIVERIES = 1
VERP_CONFIRMATIONS = 1
VERP_DELIVERY_INTERVAL = 0
# Make membership viewable by admin only by default (lp bug 1021493)
# Private_roster == 0: anyone can see, 1: members only, 2: admin only.
DEFAULT_PRIVATE_ROSTER = 2

View File

@ -0,0 +1,3 @@
{% for site in mailman_sites %}
{{ site.listdomain }}: /srv/mailman/{{ site.name }}
{% endfor %}

View File

@ -0,0 +1,5 @@
- hosts: "mailman:!disabled"
name: "Configure mailman servers"
roles:
- iptables
- mailman

View File

@ -79,6 +79,7 @@
- host_vars/letsencrypt01.opendev.org.yaml - host_vars/letsencrypt01.opendev.org.yaml
- host_vars/letsencrypt02.opendev.org.yaml - host_vars/letsencrypt02.opendev.org.yaml
- host_vars/lists.openstack.org.yaml - host_vars/lists.openstack.org.yaml
- host_vars/lists.katacontainers.io.yaml
- host_vars/gitea99.opendev.org.yaml - host_vars/gitea99.opendev.org.yaml
- host_vars/grafana01.opendev.org.yaml - host_vars/grafana01.opendev.org.yaml
- host_vars/mirror01.openafs.provider.opendev.org.yaml - host_vars/mirror01.openafs.provider.opendev.org.yaml

View File

@ -0,0 +1,2 @@
mailman_list_password: notarealpassword
mailman_test_mode: true

View File

@ -1 +1,2 @@
listpassword: notarealpassword mailman_list_password: notarealpassword
mailman_test_mode: true

View File

@ -0,0 +1,17 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
testinfra_hosts = ['lists.katacontainers.io']
def test_mm_list_is_present(host):
cmd = host.run('list_lists --bare')
assert 'kata-dev' in cmd.stdout

View File

@ -0,0 +1,29 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
testinfra_hosts = ['lists.openstack.org']
def test_mm_list_is_present(host):
cmd = host.run('MAILMAN_SITE_DIR=/srv/mailman/airship list_lists --bare')
assert 'airship-discuss' in cmd.stdout
cmd = host.run('MAILMAN_SITE_DIR=/srv/mailman/opendev list_lists --bare')
assert 'service-discuss' in cmd.stdout
cmd = host.run('MAILMAN_SITE_DIR=/srv/mailman/openstack list_lists --bare')
assert 'openstack-discuss' in cmd.stdout
cmd = host.run('MAILMAN_SITE_DIR=/srv/mailman/starlingx list_lists --bare')
assert 'starlingx-discuss' in cmd.stdout
cmd = host.run('MAILMAN_SITE_DIR=/srv/mailman/zuul list_lists --bare')
assert 'zuul-discuss' in cmd.stdout

View File

@ -204,20 +204,25 @@
label: ubuntu-bionic label: ubuntu-bionic
- name: lists.openstack.org - name: lists.openstack.org
label: ubuntu-xenial label: ubuntu-xenial
- name: lists.katacontainers.io
label: ubuntu-xenial
required-projects: required-projects:
- opendev/ansible-role-puppet
- opendev/system-config - opendev/system-config
files: files:
- playbooks/install-ansible.yaml - playbooks/install-ansible.yaml
- modules/openstack_project/manifests/lists.pp
- inventory/service/host_vars/lists.openstack.org.yaml - inventory/service/host_vars/lists.openstack.org.yaml
- inventory/service/group_vars/puppet - inventory/service/host_vars/lists.katacontainers.io.yaml
- playbooks/roles/run-puppet/ - inventory/service/group_vars/mailman.yaml
- playbooks/roles/install-ansible-roles/
- playbooks/roles/base/exim - playbooks/roles/base/exim
- playbooks/roles/mailman
- playbooks/service-lists.yaml
- playbooks/zuul/templates/host_vars/lists.openstack.org.yaml.j2
- playbooks/zuul/templates/host_vars/lists.katacontainers.io.yaml.j2
vars: vars:
run_playbooks: run_playbooks:
- playbooks/remote_puppet_else.yaml - playbooks/service-lists.yaml
# Run this twice to check idempotency
- playbooks/service-lists.yaml
- job: - job:
name: system-config-run-nodepool name: system-config-run-nodepool