source: server/mail/postfix.xml@ 793c1ba

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 6.0 6.1 6.2 6.2.0 6.2.0-rc1 6.2.0-rc2 6.3 6.3-rc1 6.3-rc2 6.3-rc3 7.10 7.4 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts krejzi/svn lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition systemd-11177 systemd-13485 trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 793c1ba was 793c1ba, checked in by Randy McMurchy <randy@…>, 19 years ago

Added md5sums to Chapter 21 packages

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@3445 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 20.7 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
3 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7<!ENTITY postfix-download-http "http://www.mirrorspace.org/postfix/official/postfix-&postfix-version;.tar.gz">
8<!ENTITY postfix-download-ftp "ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-&postfix-version;.tar.gz">
9<!ENTITY postfix-md5sum "bcaa4aac80595d04c60c72844203a04d">
10<!ENTITY postfix-size "1.9 MB">
11<!ENTITY postfix-buildsize "81 MB">
12<!ENTITY postfix-time "0.29 SBU">
13]>
14
15<sect1 id="postfix" xreflabel="Postfix-&postfix-version;">
16<sect1info>
17<othername>$LastChangedBy$</othername>
18<date>$Date$</date>
19</sect1info>
20<?dbhtml filename="postfix.html"?>
21<title>Postfix-&postfix-version;</title>
22<indexterm zone="postfix">
23<primary sortas="a-Postfix">Postfix</primary></indexterm>
24
25<sect2>
26<title>Introduction to Postfix</title>
27
28<para>The <application>Postfix</application> package contains a Mail
29Transport Agent (<acronym>MTA</acronym>). This is useful for sending email
30to other users of your host machine. It can also be configured to be a
31central mail server for your domain, a mail relay agent or simply a mail
32delivery agent to your local Internet Service Provider
33(<acronym>ISP</acronym>).</para>
34
35<sect3><title>Package information</title>
36<itemizedlist spacing='compact'>
37<listitem><para>Download (HTTP): <ulink
38url="&postfix-download-http;"/></para></listitem>
39<listitem><para>Download (FTP): <ulink
40url="&postfix-download-ftp;"/></para></listitem>
41<listitem><para>Download MD5 sum: &postfix-md5sum;</para></listitem>
42<listitem><para>Download size: &postfix-size;</para></listitem>
43<listitem><para>Estimated disk space required:
44&postfix-buildsize;</para></listitem>
45<listitem><para>Estimated build time:
46&postfix-time;</para></listitem></itemizedlist>
47</sect3>
48
49<sect3><title><application>Postfix</application> dependencies</title>
50<sect4><title>Required</title>
51<para><xref linkend="db"/></para>
52</sect4>
53
54<sect4><title>Optional</title>
55<para><xref linkend="pcre"/>,
56<xref linkend="mysql"/>,
57<xref linkend="postgresql"/>,
58<xref linkend="openldap"/>,
59<xref linkend="openssl"/> and
60<xref linkend="cyrus-sasl"/></para>
61</sect4>
62</sect3>
63
64</sect2>
65
66<sect2>
67<title>Installation of <application>Postfix</application></title>
68
69<sect3><title>Configuring the build</title>
70
71<para>The <application>Postfix</application> source tree does not contain a
72<filename>configure</filename> script, rather the makefile in the
73top-level directory contains a <parameter>makefiles</parameter> target that
74regenerates all the other makefiles in the build tree. If you wish to
75use additional software such as a database back-end for virtual users, or
76<acronym>TLS</acronym>/<acronym>SSL</acronym> authentication, you'll
77need to regenerate the makefiles using one or more of the appropriate
78<envar>CCARGS</envar> and <envar>AUXLIBS</envar> settings listed below.</para>
79
80<para>Here is an example that combines the
81<acronym>TLS</acronym>/<acronym>SSL</acronym> and
82<application>Cyrus-SASL</application> arguments:</para>
83
84<screen><userinput><command>make makefiles \
85CCARGS="-DHAS_SSL -DUSE_SASL_AUTH -I/usr/include/openssl -I/usr/include/sasl" \
86AUXLIBS="-L/usr/lib -R/usr/lib -lssl -lcrypto -lsasl2"</command></userinput></screen>
87
88<sect4><title>SSL/TLS authentication</title>
89<para>To use <acronym>SSL</acronym>/<acronym>TLS</acronym>
90authentication with <application>Postfix</application>, you'll first
91need to apply a patch availible from
92<ulink url="ftp://ftp.aet.tu-cottbus.de/pub/postfix_tls/pfixtls-0.8.18-2.1.3-0.9.7d.tar.gz"/>.
93Unzip the patch tarball, and apply with the following commands:</para>
94
95<screen><userinput><command>patch -p1 &lt; ../pfixtls-0.8.18-2.1.3-0.9.7d/pfixtls.diff</command></userinput></screen>
96
97<para>You will need to pass the following values to the
98<command>make makefiles</command> command:</para>
99
100<screen><userinput>CCARGS="-DHAS_SSL -I/usr/include/openssl" \
101AUXLIBS="-L/usr/lib -lssl -lcrypto"</userinput></screen>
102
103<para>To use <acronym>SSL</acronym> or <acronym>TLS</acronym> you will
104also need <xref linkend="cyrus-sasl"/>.</para>
105</sect4>
106
107<sect4><title>Cyrus-SASL</title>
108<para>To use <application>Cyrus-SASL</application> with
109<application>Postfix</application>, use the following arguments:</para>
110
111<screen><userinput>CCARGS="-DUSE_SASL_AUTH -I/usr/include/sasl" \
112AUXLIBS="-L/usr/lib -R/usr/lib -lsasl2"</userinput></screen>
113</sect4>
114
115<sect4><title>OpenLDAP</title>
116<para>To use <application>OpenLDAP</application> with
117<application>Postfix</application>, use the following arguments:</para>
118
119<screen><userinput>CCARGS="-I/usr/include -DHAS_LDAP" \
120AUXLIBS="-L/usr/lib -lldap -llber"</userinput></screen>
121</sect4>
122
123<sect4><title>MySQL</title>
124<para>To use <application>MySQL</application> with
125<application>Postfix</application>, use the following arguments:</para>
126
127<screen><userinput>CCARGS="-DHAS_MYSQL -I/usr/include/mysql" \
128AUXLIBS="-L/usr/lib -lmysqlclient -lz -lm"</userinput></screen>
129</sect4>
130
131<sect4><title>PostgreSQL</title>
132<para>To use <application>PostgreSQL</application> with
133<application>Postfix</application>, use the following arguments:</para>
134
135<screen><userinput>CCARGS="-DHAS_PGSQL -I/usr/include/postgresql" \
136AUXLIBS="-L/usr/lib -lpq -lz -lm"</userinput></screen>
137</sect4>
138
139</sect3>
140
141<sect3><title>Installing Postfix</title>
142
143<para>Before you compile the program, you need to create users and groups that
144will be expected to be in place when the install script executes. Add the
145users and groups with the following commands:</para>
146
147<screen><userinput><command>groupadd postfix &amp;&amp;
148groupadd postdrop &amp;&amp;
149groupadd -g 65534 nogroup &amp;&amp;
150useradd -c postfix -d /dev/null -g postfix -s /bin/false postfix &amp;&amp;
151useradd -c nobody -d /home -g nogroup -s /bin/bash -u 65534 nobody &amp;&amp;
152chown postfix:postfix /var/mail</command></userinput></screen>
153
154<para>Install <application>Postfix</application> by running the
155following commands:</para>
156
157<screen><userinput><command>make &amp;&amp;
158sh postfix-install daemon_directory=/usr/sbin \
159 manpage_directory=/usr/share/man \
160 sample_directory=/usr/share/doc/postfix \
161 -non-interactive</command></userinput></screen>
162
163<para>The final installation step is to install the program's documentation with
164the following commands:</para>
165
166<screen><userinput><command>install -d /usr/share/doc/postfix &amp;&amp;
167cp -rf html/* /usr/share/doc/postfix</command></userinput></screen>
168</sect3></sect2>
169
170<sect2>
171<title>Command explanations</title>
172
173<para><command>sh postfix-install ... -non-interactive</command> : This keeps
174the install script from asking any questions, thereby accepting default
175destination directories in all but the three cases explicitly mentioned.</para>
176
177<para><command>make makefiles</command> : This command rebuilds the
178makefiles throughout the source tree to use the options contained in the
179<envar>CCARGS</envar> and <envar>AUXLIBS</envar> variables.</para>
180
181</sect2>
182
183<sect2>
184<title>Configuring <application>Postfix</application></title>
185
186<sect3 id="postfix-config"><title>Config files</title>
187<para><filename>/etc/aliases</filename>,
188<filename>/etc/postfix/main.cf</filename> and
189<filename>/etc/postfix/master.cf</filename></para>
190<indexterm zone="postfix postfix-config">
191<primary sortas="e-etc-aliases">/etc/aliases</primary></indexterm>
192<indexterm zone="postfix postfix-config">
193<primary sortas="e-etc-postfix-star">/etc/postfix/*</primary></indexterm>
194</sect3>
195
196<sect3><title>Configuration Information</title>
197
198<screen><userinput><command>cat &gt;&gt; /etc/aliases &lt;&lt; "EOF"</command>
199# Begin /etc/aliases
200
201MAILER-DAEMON: postmaster
202postmaster: root
203
204root: LOGIN
205# End /etc/aliases
206<command>EOF</command></userinput></screen>
207
208<note><para>To protect an existing <filename>/etc/aliases</filename> file, the
209above command appends these aliases to it if it exists. This file should be
210checked and duplicate aliases removed, if present.</para></note>
211
212<para>The <filename>/etc/aliases</filename> file that was just created or
213appended, the <filename>main.cf</filename> and the
214<filename>master.cf</filename> must be personalized for your system. The
215<filename>aliases</filename> file needs your non-root login identity so mail
216addressed to root can be forwarded to you at the user level. The
217<filename>main.cf</filename> file needs your fully qualified hostname. All of
218these edits can be done with <command>sed</command> commands entered into the
219console with appropriate substitutions of your non-root login name for
220<replaceable>[user]</replaceable> and your fully qualified hostname for
221<replaceable>[localhost.localdomain]</replaceable>. You will find the
222<filename>main.cf</filename> file is self documenting, so load it into your
223editor to make the changes you need for your situation.</para>
224
225<screen><userinput><command>sed -i "s/LOGIN/<replaceable>[user]</replaceable>/" /etc/aliases &amp;&amp;
226sed -i "s/#myhostname = host.domain.tld/myhostname = \
227 <replaceable>[localhost.localdomain]</replaceable>/" /etc/postfix/main.cf &amp;&amp;
228/usr/bin/newaliases &amp;&amp;
229/usr/sbin/postfix start</command></userinput></screen></sect3>
230
231<sect3 id="postfix-init"><title>Postfix init.d script</title>
232
233<para>To automate the running of Postfix at startup, install the
234<filename>/etc/rc.d/init.d/postfix</filename> init script included in the
235<xref linkend="intro-important-bootscripts"/> package.</para>
236<indexterm zone="postfix postfix-init"> <primary
237sortas="f-postfix">postfix</primary></indexterm>
238
239<screen><userinput><command>make install-postfix</command></userinput></screen>
240
241</sect3>
242
243</sect2>
244
245<sect2>
246<title>Contents</title>
247
248<segmentedlist>
249<segtitle>Installed Programs</segtitle>
250<segtitle>Installed Libraries</segtitle>
251<segtitle>Installed Directories</segtitle>
252
253<seglistitem>
254<seg>bounce, cleanup, error, flush, lmtp, local, mailq, master,
255newaliases, nqmgr, oqmgr, pickup, pipe, postalias, postcat, postconf,
256postdrop, postfix, postkick, postlock, postlog, postmap, postqueue,
257postsuper, proxymap, qmgr, qmqpd, sendmail, showq, smtp, smtpd, spawn,
258trivial-rewrite, verify, and virtual</seg>
259<seg>None</seg>
260<seg>/etc/postfix and /usr/share/doc/postfix</seg>
261</seglistitem>
262</segmentedlist>
263
264<variablelist>
265<bridgehead renderas="sect3">Short Descriptions</bridgehead>
266<?dbfo list-presentation="list"?>
267
268<varlistentry id="bounce">
269<term><command>bounce</command></term>
270<listitem><para>A daemon that maintains per-message log files with
271non-delivery status information.</para>
272<indexterm zone="postfix bounce">
273<primary sortas="b-bounce">bounce</primary></indexterm>
274</listitem>
275</varlistentry>
276
277<varlistentry id="cleanup">
278<term><command>cleanup</command></term>
279<listitem><para>A daemon that processes inbound mail, inserts it into the
280incoming mail queue, and informs the queue manager of its arrival.</para>
281<indexterm zone="postfix cleanup">
282<primary sortas="b-cleanup">cleanup</primary></indexterm>
283</listitem>
284</varlistentry>
285
286<varlistentry id="error">
287<term><command>error</command></term>
288<listitem><para>A deamon that processes non-delivery requests from the
289queue manager.</para>
290<indexterm zone="postfix error">
291<primary sortas="b-error">error</primary></indexterm>
292</listitem>
293</varlistentry>
294
295<varlistentry id="flush">
296<term><command>flush</command></term>
297<listitem><para>A daemon that maintains a record of deferred mail by
298destination.</para>
299<indexterm zone="postfix flush">
300<primary sortas="b-flush">flush</primary></indexterm>
301</listitem>
302</varlistentry>
303
304<varlistentry id="lmtp">
305<term><command>lmtp</command></term>
306<listitem><para>A daemon that processes message delivery requests from the
307queue manager.</para>
308<indexterm zone="postfix lmtp">
309<primary sortas="b-lmtp">lmtp</primary></indexterm>
310</listitem>
311</varlistentry>
312
313<varlistentry id="local">
314<term><command>local</command></term>
315<listitem><para>A daemon that processes delivery requests from the queue
316manager to deliver mail to local recipients.</para>
317<indexterm zone="postfix local">
318<primary sortas="b-local">local</primary></indexterm>
319</listitem>
320</varlistentry>
321
322<varlistentry id="mailq">
323<term><command>mailq</command></term>
324<listitem><para>A symlink to <filename>sendmail</filename>.</para>
325<indexterm zone="postfix mailq">
326<primary sortas="b-mailq">mailq</primary></indexterm>
327</listitem>
328</varlistentry>
329
330<varlistentry id="master">
331<term><command>master</command></term>
332<listitem><para>The resident process that runs
333<application>Postfix</application> daemons on demand.</para>
334<indexterm zone="postfix master">
335<primary sortas="b-master">master</primary></indexterm>
336</listitem>
337</varlistentry>
338
339<varlistentry id="newaliases">
340<term><command>newaliases</command></term>
341<listitem><para>A symlink to <filename>sendmail</filename>.</para>
342<indexterm zone="postfix newaliases">
343<primary sortas="b-newaliases">newaliases</primary></indexterm>
344</listitem>
345</varlistentry>
346
347<varlistentry id="nqmgr">
348<term><command>nqmgr</command></term>
349<listitem><para>A daemon that awaits the arrival of incoming mail and
350arranges for its delivery.</para>
351<indexterm zone="postfix nqmgr">
352<primary sortas="b-nqmgr">nqmgr</primary></indexterm>
353</listitem>
354</varlistentry>
355
356<varlistentry id="oqmgr">
357<term><command>oqmgr</command></term>
358<listitem><para>The old style queue manager. This will be removed
359soon.</para>
360<indexterm zone="postfix oqmgr">
361<primary sortas="b-oqmgr">oqmgr</primary></indexterm>
362</listitem>
363</varlistentry>
364
365<varlistentry id="pickup">
366<term><command>pickup</command></term>
367<listitem><para>A daemon that waits for hints that new mail has been
368dropped into the maildrop directory, and feeds it into the
369<application>cleanup</application> daemon.</para>
370<indexterm zone="postfix pickup">
371<primary sortas="b-pickup">pickup</primary></indexterm>
372</listitem>
373</varlistentry>
374
375<varlistentry id="pipe">
376<term><command>pipe</command></term>
377<listitem><para>A daemon that processes requests from the queue
378manager to deliver messages to external commands.</para>
379<indexterm zone="postfix pipe">
380<primary sortas="b-pipe">pipe</primary></indexterm>
381</listitem>
382</varlistentry>
383
384<varlistentry id="postalias">
385<term><command>postalias</command></term>
386<listitem><para>Creates or queries one or more
387<application>Postfix</application> alias databases, or updates an
388existing one.</para>
389<indexterm zone="postfix postalias">
390<primary sortas="b-postalias">postalias</primary></indexterm>
391</listitem>
392</varlistentry>
393
394<varlistentry id="postcat">
395<term><command>postcat</command></term>
396<listitem><para>Prints the contents of the
397<application>named</application> files in human readable format.</para>
398<indexterm zone="postfix postcat">
399<primary sortas="b-postcat">postcat</primary></indexterm>
400</listitem>
401</varlistentry>
402
403<varlistentry id="postconf">
404<term><command>postconf</command></term>
405<listitem><para>Displays or changes the value of
406<application>Postfix</application> configuration parameters.</para>
407<indexterm zone="postfix postconf">
408<primary sortas="b-postconf">postconf</primary></indexterm>
409</listitem>
410</varlistentry>
411
412<varlistentry id="postdrop">
413<term><command>postdrop</command></term>
414<listitem><para>Creates a file in the maildrop directory and copies
415it's standard input to the file.</para>
416<indexterm zone="postfix postdrop">
417<primary sortas="b-postdrop">postdrop</primary></indexterm>
418</listitem>
419</varlistentry>
420
421<varlistentry id="postfix-bin">
422<term><command>postfix</command></term>
423<listitem><para>Controls the operation of the
424<application>Postfix</application> mail system.</para>
425<indexterm zone="postfix postfix-bin">
426<primary sortas="b-postfix">postfix</primary></indexterm>
427</listitem>
428</varlistentry>
429
430<varlistentry id="postkick">
431<term><command>postkick</command></term>
432<listitem><para>Sends requests to the specified service over a
433local transport channel.</para>
434<indexterm zone="postfix postkick">
435<primary sortas="b-postkick">postkick</primary></indexterm>
436</listitem>
437</varlistentry>
438
439<varlistentry id="postlock">
440<term><command>postlock</command></term>
441<listitem><para>Locks a mail folder for exclusive use, and executes
442commands passed to it.</para>
443<indexterm zone="postfix postlock">
444<primary sortas="b-postlock">postlock</primary></indexterm>
445</listitem>
446</varlistentry>
447
448<varlistentry id="postlog">
449<term><command>postlog</command></term>
450<listitem><para>A <application>Postfix</application>-compatible logging
451interface for use in, for example, shell scripts.</para>
452<indexterm zone="postfix postlog">
453<primary sortas="b-postlog">postlog</primary></indexterm>
454</listitem>
455</varlistentry>
456
457<varlistentry id="postmap">
458<term><command>postmap</command></term>
459<listitem><para>Creates or queries one or more Postfix lookup
460tables, or updates an existing one.</para>
461<indexterm zone="postfix postmap">
462<primary sortas="b-postmap">postmap</primary></indexterm>
463</listitem>
464</varlistentry>
465
466<varlistentry id="postqueue">
467<term><command>postqueue</command></term>
468<listitem><para>The <application>Postfix</application> user interface for
469queue management.</para>
470<indexterm zone="postfix postqueue">
471<primary sortas="b-postqueue">postqueue</primary></indexterm>
472</listitem>
473</varlistentry>
474
475<varlistentry id="postsuper">
476<term><command>postsuper</command></term>
477<listitem><para>The <application>Postfix</application> user interface for
478superuser queue management.</para>
479<indexterm zone="postfix postsuper">
480<primary sortas="b-postsuper">postsuper</primary></indexterm>
481</listitem>
482</varlistentry>
483
484<varlistentry id="proxymap">
485<term><command>proxymap</command></term>
486<listitem><para>Provides read-only table lookup services to other
487<application>Postfix</application> processes.</para>
488<indexterm zone="postfix proxymap">
489<primary sortas="b-proxymap">proxymap</primary></indexterm>
490</listitem>
491</varlistentry>
492
493<varlistentry id="qmgr">
494<term><command>qmgr</command></term>
495<listitem><para>A daemon that awaits the arrival of incoming mail and
496arranges for its delivery.</para>
497<indexterm zone="postfix qmgr">
498<primary sortas="b-qmgr">qmgr</primary></indexterm>
499</listitem>
500</varlistentry>
501
502<varlistentry id="qmqpd">
503<term><command>qmqpd</command></term>
504<listitem><para>A daemon that receives one message per connection, and
505pipes it through the <application>cleanup</application> daemon, and
506places it into the incoming queue.</para>
507<indexterm zone="postfix qmqpd">
508<primary sortas="b-qmqpd">qmqpd</primary></indexterm>
509</listitem>
510</varlistentry>
511
512<varlistentry id="sendmail-postfix">
513<term><command>sendmail</command></term>
514<listitem><para>The <application>Postfix</application> to
515<application>Sendmail</application> compatibility interface.</para>
516<indexterm zone="postfix sendmail-postfix">
517<primary sortas="b-sendmail">sendmail</primary></indexterm>
518</listitem>
519</varlistentry>
520
521<varlistentry id="showq">
522<term><command>showq</command></term>
523<listitem><para>A daemon that reports the Postfix mail queue status.</para>
524<indexterm zone="postfix showq">
525<primary sortas="b-showq">showq</primary></indexterm>
526</listitem>
527</varlistentry>
528
529<varlistentry id="smtp">
530<term><command>smtp</command></term>
531<listitem><para>Looks up a list of mail exchanger addresses for the
532destination host, sorts the list by preference, and connects to
533each listed address until it finds a server that responds.</para>
534<indexterm zone="postfix smtp">
535<primary sortas="b-smtp">smtp</primary></indexterm>
536</listitem>
537</varlistentry>
538
539<varlistentry id="smtpd">
540<term><command>smtpd</command></term>
541<listitem><para>Accepts network connection requests and performs zero
542or more SMTP transactions per connection.</para>
543<indexterm zone="postfix smtpd">
544<primary sortas="b-smtpd">smtpd</primary></indexterm>
545</listitem>
546</varlistentry>
547
548<varlistentry id="spawn">
549<term><command>spawn</command></term>
550<listitem><para>Listens on a port as specified in the
551<application>Postfix</application> <filename>master.cf</filename> file
552and spawns an external command whenever a connection is established.</para>
553<indexterm zone="postfix spawn">
554<primary sortas="b-spawn">spawn</primary></indexterm>
555</listitem>
556</varlistentry>
557
558<varlistentry id="trivial-rewrite">
559<term><command>trivial-rewrite</command></term>
560<listitem><para>A daemon that rewrites addresses to standard form.</para>
561<indexterm zone="postfix trivial-rewrite">
562<primary sortas="b-trivial-rewrite">trivial-rewrite</primary></indexterm>
563</listitem>
564</varlistentry>
565
566<varlistentry id="verify">
567<term><command>verify</command></term>
568<listitem><para>Maintains a record of what recipient addresses are known
569to be deliverable or undeliverable.</para>
570<indexterm zone="postfix verify">
571<primary sortas="b-verify">verify</primary></indexterm>
572</listitem>
573</varlistentry>
574
575<varlistentry id="virtual">
576<term><command>virtual</command></term>
577<listitem><para>Delivers mail to virtual user's mail directories.</para>
578<indexterm zone="postfix virtual">
579<primary sortas="b-virtual">virtual</primary></indexterm>
580</listitem>
581</varlistentry>
582</variablelist>
583
584</sect2>
585
586</sect1>
587
Note: See TracBrowser for help on using the repository browser.